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.