diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-03 22:57:10 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-03 22:57:10 +0200 |
| commit | 2b0b62b44a87536597050c525322c7bcc745bdb2 (patch) | |
| tree | 56ee143d427c66cb1f0583c07beec5f181abc983 /src/Evaluation.hs | |
| parent | 5e7d3a5ff586ac75b768a9a1c1f2d5b80960e821 (diff) | |
| download | computorv2-2b0b62b44a87536597050c525322c7bcc745bdb2.tar.gz computorv2-2b0b62b44a87536597050c525322c7bcc745bdb2.tar.bz2 computorv2-2b0b62b44a87536597050c525322c7bcc745bdb2.zip | |
Added polynom solver from computorv1, Added matrix multipilcation
Diffstat (limited to 'src/Evaluation.hs')
| -rw-r--r-- | src/Evaluation.hs | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/Evaluation.hs b/src/Evaluation.hs index db2c2b2..9b45010 100644 --- a/src/Evaluation.hs +++ b/src/Evaluation.hs @@ -1,37 +1,2 @@ module Evaluation where -import Data.Map as M - -import Expr as E - - -type LabelMap a = Map String a -data Context = Context { variables :: LabelMap Expr - , functions :: LabelMap (String, Expr) - } - -eval :: Context -> Expr -> Maybe Expr - -eval c (Add e1 e2) = evalInfix c e1 e2 add -eval c (Sub e1 e2) = evalInfix c e1 e2 sub -eval c (Mul e1 e2) = evalInfix c e1 e2 mul -eval c (Div e1 e2) = evalInfix c e1 e2 E.div -eval c (Mod e1 e2) = evalInfix c e1 e2 E.mod -eval c (Exp e1 e2) = evalInfix c e1 e2 E.exp -eval c (Dot e1 e2) = evalInfix c e1 e2 dot - -eval c (Variable name) = name `M.lookup` (variables c) >>= eval c - -eval (Context vars funcs) (Function name e) = - do arg <- eval (Context vars funcs) e - (argName, functionExpr) <- name `M.lookup` funcs - let localVars = insert argName arg vars - eval (Context localVars funcs) functionExpr - -eval c x = Just x - - -evalInfix :: 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 |
