module Calculator.Evaluator.Cmd (evalCmd) where -------------------------------------------------------------------------------- import Calculator.Prim.Expr (Bindings, defBinds, fromConst, addVar, addFun) import Calculator.Prim.Cmd (Cmd(..)) import Calculator.Evaluator.Func (mkFun) import Calculator.Evaluator.Expr (evalExpr) -------------------------------------------------------------------------------- evalCmd :: Bindings -> Cmd -> Bindings evalCmd _ (Reset) = defBinds evalCmd b (Assign s e) = addVar (s, fromConst $ evalExpr b e) b evalCmd b f@(Func i _ _) = addFun (i, mkFun b f) b --------------------------------------------------------------------------------