module Calculator.Evaluator.Statement (evalStat) where -------------------------------------------------------------------------------- import Calculator.Evaluator.Cmd (evalCmd) import Calculator.Evaluator.Expr (evalExpr) import Calculator.Prim.Expr (Bindings, Expr (Message)) import Calculator.Prim.Statement (Statement (..)) -------------------------------------------------------------------------------- evalStat :: Bindings -> Statement -> Either Expr Bindings evalStat b stat = case stat of Expression e -> Left $ evalExpr b e Command c -> case evalCmd b c of Left s -> Left . Message $ s Right b' -> Right b' --------------------------------------------------------------------------------