calculator-0.3.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, Constant))
import Calculator.Prim.Result (Result (..))
import Calculator.Prim.Statement (Statement (..))
--------------------------------------------------------------------------------
evalStat :: Bindings -> Statement -> Result
evalStat b stat =
case stat of
Expression e -> case evalExpr b e of
Constant c -> Value c
Message t -> Error . unlines $ t
_ -> Error "Internal error: evalStat"
Command c -> evalCmd b c
--------------------------------------------------------------------------------