- data EvaluationState = EvaluationState {}
- type EvaluationMonad = LazyEvalMonad EvaluationState
- newtype LazyEvalMonad s a = LazyEvalMonad {
- unLazyEvalMonad :: s -> a
- runLazyEvalMonad :: s -> LazyEvalMonad s a -> a
- gets :: (s -> a) -> LazyEvalMonad s a
- modify :: (s -> s) -> LazyEvalMonad s a -> LazyEvalMonad s a
- runEvaluator :: EvaluationState -> EvaluationMonad a -> a
- getState :: EvaluationMonad EvaluationState
- getEnvironment :: EvaluationMonad Environment
- lookupVar :: Name -> EvaluationMonad Value
- addScopeAndBind :: [(Name, Value)] -> EvaluationMonad a -> EvaluationMonad a
- addScopeAndBindM :: [(Name, EvaluationMonad Value)] -> EvaluationMonad a -> EvaluationMonad a
- throwError :: ErrorMessage -> a
Documentation
runLazyEvalMonad :: s -> LazyEvalMonad s a -> aSource
gets :: (s -> a) -> LazyEvalMonad s aSource
modify :: (s -> s) -> LazyEvalMonad s a -> LazyEvalMonad s aSource
runEvaluator :: EvaluationState -> EvaluationMonad a -> aSource
addScopeAndBind :: [(Name, Value)] -> EvaluationMonad a -> EvaluationMonad aSource
Implements non-recursive lets.
addScopeAndBindM :: [(Name, EvaluationMonad Value)] -> EvaluationMonad a -> EvaluationMonad aSource
Implements recursive lets.
throwError :: ErrorMessage -> aSource