From 99e5658feb48f15f85eaf9680affea2f490459bb Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 3 Jun 2020 12:02:31 +0200 Subject: Refactoring parsing, Fixing builtin, rewrite everything else --- src/Evaluation.hs | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'src/Evaluation.hs') 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 -- cgit