Changeset 8705 for src/Pugs/Monads.hs
- Timestamp:
- 01/16/06 18:57:28 (3 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Monads.hs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Monads.hs
r8699 r8705 16 16 enterLex, enterContext, enterEvalContext, enterPackage, enterCaller, 17 17 enterGiven, enterWhen, enterWhile, genSymPrim, genSymCC, 18 enterBlock, enterSub, 18 enterBlock, enterSub, envEnterCaller, 19 19 evalVal, tempVar, 20 20 … … 27 27 import Pugs.Types 28 28 import Control.Monad.RWS 29 import qualified Data.Map as Map 29 30 30 31 … … 89 90 -} 90 91 enterCaller :: Eval a -> Eval a 91 enterCaller = local (\env -> env 92 enterCaller = local envEnterCaller 93 94 envEnterCaller :: Env -> Env 95 envEnterCaller env = env 92 96 { envCaller = Just env 93 , envDepth = envDepth env + 1 }) 97 { envLexical = MkPad (lex `Map.intersection` envImplicit env) 98 } 99 , envDepth = envDepth env + 1 100 , envImplicit = Map.fromList [("$_", ())] 101 } 102 where 103 MkPad lex = envLexical env 94 104 95 105 {-| … … 244 254 , envPackage = maybe (envPackage e) envPackage (subEnv sub) 245 255 , envLexical = combine [blockRec] 246 (subPad sub `unionPads` envLexical env) } 256 (subPad sub `unionPads` envLexical env) 257 , envImplicit= envImplicit e `Map.union` Map.fromList 258 [ ("&?BLOCK", ()) ] 259 } 247 260 | otherwise = do 248 261 subRec <- sequence … … 255 268 , envPackage = maybe (envPackage e) envPackage (subEnv sub) 256 269 , envOuter = maybe Nothing envOuter (subEnv sub) 270 , envImplicit= envImplicit e `Map.union` Map.fromList 271 [ ("&?SUB", ()), ("$?SUBNAME", ()), ("&?CALLER_CONTINUATION", ()) ] 257 272 } 258 273 ccSub :: (Val -> Eval Val) -> Env -> VCode
