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 --------------------------------------------------------------------------------