calculator-0.2.0.0: src/Calculator/Evaluator/Statement.hs
module Calculator.Evaluator.Statement (evalStat) where
--------------------------------------------------------------------------------
import Calculator.Evaluator.Cmd (evalCmd)
import Calculator.Evaluator.Expr (evalExpr)
import Calculator.Prim.Bindings (Bindings)
import Calculator.Prim.Expr (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'
--------------------------------------------------------------------------------