aboutsummaryrefslogtreecommitdiff
path: root/src/Evaluation.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-03 12:02:31 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-03 12:02:31 +0200
commit99e5658feb48f15f85eaf9680affea2f490459bb (patch)
tree61fa812185892845b36792960435f79e0535043f /src/Evaluation.hs
parente8e86cea2bffe23961f0a1bea8ee770343894858 (diff)
downloadcomputorv2-99e5658feb48f15f85eaf9680affea2f490459bb.tar.gz
computorv2-99e5658feb48f15f85eaf9680affea2f490459bb.tar.bz2
computorv2-99e5658feb48f15f85eaf9680affea2f490459bb.zip
Refactoring parsing, Fixing builtin, rewrite everything else
Diffstat (limited to 'src/Evaluation.hs')
-rw-r--r--src/Evaluation.hs41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/Evaluation.hs b/src/Evaluation.hs
index f0db71c..5356b30 100644
--- a/src/Evaluation.hs
+++ b/src/Evaluation.hs
@@ -1,25 +1,24 @@
module Evaluation where
import Expr
-import qualified Assignment as A
-eval :: A.Context -> Expr -> Maybe Expr
-eval c (Variable n) = do (A.Variable _ e) <- A.get c n
- eval c e
-eval c (Function n e) = do x <- eval c e
- (A.Function _ param fe) <- A.get c n
- let tmp = A.update c (A.Variable param x)
- eval tmp fe
-eval c (Add e1 e2) = evalInfix c e1 e2 (+?)
-eval c (Sub e1 e2) = evalInfix c e1 e2 (-?)
-eval c (Mul e1 e2) = evalInfix c e1 e2 (*?)
-eval c (Div e1 e2) = evalInfix c e1 e2 (/?)
-eval c (Mod e1 e2) = evalInfix c e1 e2 (%?)
-eval c (Exp e1 e2) = evalInfix c e1 e2 (^?)
-eval c (Dot e1 e2) = evalInfix c e1 e2 (**?)
-eval c x = Just x
-
-evalInfix :: A.Context -> Expr -> Expr -> (Expr -> Expr -> Maybe Expr) -> Maybe Expr
-evalInfix c e1 e2 f = do a <- eval c e1
- b <- eval c e2
- f a b
+-- eval :: A.Context -> Expr -> Maybe Expr
+-- eval c (Variable n) = do (A.Variable _ e) <- A.get c n
+-- eval c e
+-- eval c (Function n e) = do x <- eval c e
+-- (A.Function _ param fe) <- A.get c n
+-- let tmp = A.update c (A.Variable param x)
+-- eval tmp fe
+-- eval c (Add e1 e2) = evalInfix c e1 e2 (builtinAdd)
+-- eval c (Sub e1 e2) = evalInfix c e1 e2 (builtinSub)
+-- eval c (Mul e1 e2) = evalInfix c e1 e2 (builtinMul)
+-- eval c (Div e1 e2) = evalInfix c e1 e2 (builtinDiv)
+-- eval c (Mod e1 e2) = evalInfix c e1 e2 (builtinMod)
+-- eval c (Exp e1 e2) = evalInfix c e1 e2 (builtinExp)
+-- eval c (Dot e1 e2) = evalInfix c e1 e2 (builtinDot)
+-- eval c x = Just x
+--
+-- evalInfix :: A.Context -> Expr -> Expr -> (Expr -> Expr -> Maybe Expr) -> Maybe Expr
+-- evalInfix c e1 e2 f = do a <- eval c e1
+-- b <- eval c e2
+-- f a b