Changeset 8207
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/AST.hs
r8153 r8207 101 101 (Is this correct?) 102 102 -} 103 genMultiSym :: MonadSTM m => String -> VRef -> m (Pad -> Pad)103 genMultiSym :: MonadSTM m => String -> VRef -> m PadMutator 104 104 genMultiSym name ref = do 105 105 tvar <- liftSTM $ newTVar ref … … 114 114 (right?), shadowing any earlier or outer definition. 115 115 -} 116 genSym :: MonadSTM m => String -> VRef -> m (Pad -> Pad)116 genSym :: MonadSTM m => String -> VRef -> m PadMutator 117 117 genSym name ref = do 118 118 tvar <- liftSTM $ newTVar ref -
src/Pugs/AST/Internals.hs
r8161 r8207 13 13 EvalT(..), ContT(..), 14 14 15 Pad(..), -- uses Var, TVar, VRef15 Pad(..), PadMutator, -- uses Var, TVar, VRef 16 16 Param(..), -- uses Cxt, Exp 17 17 Params, -- uses Param … … 1159 1159 listToPad = MkPad . Map.fromList 1160 1160 1161 -- | type for a function introducing a change to a Pad 1162 type PadMutator = (Pad -> Pad) 1163 1161 1164 {- Eval Monad -} 1162 1165 -- type Eval x = EvalT (ContT Val (ReaderT Env SIO)) x -
src/Pugs/AST/Pad.hs
r3962 r8207 45 45 -} 46 46 updateSubPad :: VCode -- ^ Initial sub 47 -> (Pad -> Pad)-- ^ 'Pad'-transforming function47 -> PadMutator -- ^ 'Pad'-transforming function 48 48 -> VCode -- ^ Sub with altered lexical pad 49 49 updateSubPad sub f = sub -
src/Pugs/Eval.hs
r8153 r8207 51 51 emptyEnv :: (MonadIO m, MonadSTM m) 52 52 => String -- ^ Name associated with the environment 53 -> [STM (Pad -> Pad)]-- ^ List of 'Pad'-mutating transactions used53 -> [STM PadMutator] -- ^ List of 'Pad'-mutating transactions used 54 54 -- to declare an initial set of global 55 55 -- variables … … 158 158 Used by 'reduceSym'. 159 159 -} 160 addGlobalSym :: (Pad -> Pad)-- ^ 'Pad'-transformer that will insert the new161 -- symbol160 addGlobalSym :: PadMutator -- ^ 'Pad'-transformer that will insert the new 161 -- symbol 162 162 -> Eval () 163 163 addGlobalSym newSym = do … … 986 986 { envCaller = Just env 987 987 , envDepth = envDepth env + 1 } 988 doBind :: [Pad -> Pad] -> [(Param, Exp)] -> Eval ([Pad -> Pad], [ApplyArg])988 doBind :: [PadMutator] -> [(Param, Exp)] -> Eval ([PadMutator], [ApplyArg]) 989 989 doBind syms [] = return (syms, []) 990 990 doBind syms ((prm, exp):rest) = do -
src/Pugs/Monads.hs
r7190 r8207 54 54 (Subsequent chained 'Eval's do /not/ see this new scope.) 55 55 -} 56 enterLex :: [Pad -> Pad] -- ^ Transformations on current 'Pad' to produce the56 enterLex :: [PadMutator] -- ^ Transformations on current 'Pad' to produce the 57 57 -- new 'Pad'. 58 58 -> Eval a -- ^ Evaluation to be performed in the new scope … … 167 167 -- (must have leading @&@ sigil) 168 168 -> ([Val] -> Eval Val) -- ^ The actual primitive to wrap 169 -> ( (Pad -> Pad) -> m t)-- ^ A (lambda) function that the 'Pad'169 -> (PadMutator -> m t) -- ^ A (lambda) function that the 'Pad' 170 170 -- transformer is given to 171 171 -> m t -- ^ Result of passing the pad-transformer to the \'action\' … … 188 188 -} 189 189 genSymCC :: String -- ^ Name of the primitive in the symbol table ('Pad'). 190 -> ( (Pad -> Pad) -> Eval Val)-- ^ An \'action\' function that will190 -> (PadMutator -> Eval Val) -- ^ An \'action\' function that will 191 191 -- take the pad-transformer and use 192 192 -- it to perform some evaluation … … 263 263 } 264 264 265 genSubs :: t -> Var -> (t -> VCode) -> Eval [Pad -> Pad]265 genSubs :: t -> Var -> (t -> VCode) -> Eval [PadMutator] 266 266 genSubs env name gen = sequence 267 267 [ genMultiSym name (codeRef $ gen env) -
src/Pugs/Prim.hs
r8121 r8207 1312 1312 -- The Pad symbol name is prefixed with \"&*\" for functions and 1313 1313 -- \"&*\" ~ fixity ~ \":\" for operators. 1314 primOp :: String -> String -> Params -> String -> Bool -> STM (Pad -> Pad)1314 primOp :: String -> String -> Params -> String -> Bool -> STM (PadMutator) 1315 1315 primOp sym assoc prms ret isSafe = 1316 1316 -- In safemode, we filter all prims marked as "unsafe". … … 1362 1362 1363 1363 -- |Produce a Pad update transaction with 'primOp' from a string description 1364 primDecl :: String -> STM (Pad -> Pad)1364 primDecl :: String -> STM PadMutator 1365 1365 primDecl str = primOp sym assoc params ret (safe == "safe") 1366 1366 where … … 1428 1428 -- 1429 1429 -- > ret_val assoc op_name [safe|unsafe] args 1430 initSyms :: STM [Pad -> Pad]1430 initSyms :: STM [PadMutator] 1431 1431 initSyms = mapM primDecl syms 1432 1432 where -
src/Pugs/Run.hs
r7843 r8207 165 165 hideInSafemode x = if safeMode then MkRef $ constScalar undef else x 166 166 167 initClassObjects :: [Type] -> ClassTree -> IO [STM (Pad -> Pad)]167 initClassObjects :: [Type] -> ClassTree -> IO [STM PadMutator] 168 168 initClassObjects parent (Node typ children) = do 169 169 obj <- createObject (mkType "Class") $
