Changeset 5170
- Timestamp:
- 07/04/05 00:37:10 (3 years ago)
- svk:copy_cache_prev:
- 6965
- Location:
- src/Pugs
- Files:
-
- 2 modified
-
Monads.hs (modified) (2 diffs)
-
Prim/Eval.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Monads.hs
r3904 r5170 48 48 enterEvalContext :: Cxt -> Exp -> Eval Val 49 49 enterEvalContext cxt = enterContext cxt . evalExp 50 51 {-| 52 Perform the specified evaluation in the specified package. 53 54 (Subsequent chained 'Eval's do /not/ see this package.) 55 -} 56 enterPackage :: String -> Eval a -> Eval a 57 enterPackage pkg = local (\e -> e{ envPackage = pkg }) 58 59 {-| 60 Enter a new environment and mark the previous one as 'Caller'. 61 -} 62 enterCaller :: Eval a -> Eval a 63 enterCaller = local (\env -> env 64 { envCaller = Just env 65 , envDepth = envDepth env + 1 }) 50 66 51 67 {-| … … 240 256 } ] 241 257 242 -- | (This doesn't seem to be used at the moment...)243 caller :: Int -> Eval Env244 caller n = do245 depth <- asks envDepth246 when (depth <= n) $247 fail "Cannot ask for deeper depth"248 asks $ foldl (.) id $ replicate n (fromJust . envCaller)249 250 258 evalVal :: Val -> Eval Val 251 259 evalVal val = do -
src/Pugs/Prim/Eval.hs
r4919 r5170 11 11 import Pugs.Parser.Program 12 12 import Pugs.Embed 13 import Pugs.Monads 13 14 import Pugs.Internals 14 15 import Pugs.Pretty … … 85 86 EvalResultEnv -> (`mergeStmts` Syn "env" []) 86 87 _ -> id 87 val <- resetT $ local (const env') $ do88 val <- resetT $ local (const env') $ enterCaller $ do 88 89 evl <- asks envEval 89 90 evl (trans $ envBody env')
