calculator-0.1.5.4: src/Calculator/Evaluator/Func.hs
module Calculator.Evaluator.Func where
--------------------------------------------------------------------------------
import Calculator.Prim.Base (Number)
import Calculator.Prim.Cmd (Cmd(Func))
import Calculator.Prim.Expr (addVar, Bindings, Expr(Constant))
import Calculator.Evaluator.Expr (evalExpr)
--------------------------------------------------------------------------------
mkFun :: Bindings -> Cmd -> (Number -> Number)
mkFun b (Func _ x e) = \v -> case evalExpr (addVar (x, v) b) e of
Constant z -> z
_ -> error "Invalid Result"
mkFun _ _ = error "Making function from invalid cmd"
--------------------------------------------------------------------------------