packages feed

calculator-0.1.4.2: 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, fromConst)
import Calculator.Evaluator.Expr (evalExpr)

--------------------------------------------------------------------------------

mkFun :: Bindings -> Cmd -> (Number -> Number)
mkFun b (Func _ x e) = \v -> fromConst $ evalExpr (addVar (x, v) b) e
mkFun _ _            = error "Making function from invalid cmd"