diff --git a/calculator.cabal b/calculator.cabal
--- a/calculator.cabal
+++ b/calculator.cabal
@@ -1,5 +1,5 @@
 name:                calculator
-version:             0.1.4.1
+version:             0.1.4.2
 synopsis:            A calculator that operates on string inputs
 description:         A calculator repl that processes mathematical expressions.
                      Does basic arithmetic, and provides pre-defined basic mathematical functions.
@@ -21,6 +21,7 @@
                      , Calculator.Evaluator.Cmd
                      , Calculator.Evaluator.Expr
                      , Calculator.Evaluator.Statement
+                     , Calculator.Evaluator.Func
                      , Calculator.Parser.Cmd
                      , Calculator.Parser.Expr
                      , Calculator.Parser.Statement
diff --git a/src/Calculator/Evaluator/Func.hs b/src/Calculator/Evaluator/Func.hs
new file mode 100644
--- /dev/null
+++ b/src/Calculator/Evaluator/Func.hs
@@ -0,0 +1,14 @@
+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"
