EvalMonadClass.lhs

EvalMonadClass declares MonadEval class that provides actions useful for evaluation of LIPL expressions.

> module EvalMonadClass where
>
> import LangData
>
> class (Monad m) => MonadEval m where
>     getEnv :: m Env
>     getEnvs :: m EnvStack
>     putEnvs :: EnvStack -> m ()
>     pushEnv :: Env -> m ()
>     popEnv :: m ()

So, anything that is an instance of MonadEval would have a global Stack of Envs.