aboutsummaryrefslogtreecommitdiff
path: root/src/Evaluator.hs
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-10-08 06:23:41 +0100
committerAkshay <[email protected]>2020-10-08 06:23:41 +0100
commit0775dea2bc79cb1b5ee56f74f8076fc30a394127 (patch)
tree749e3d9534c3bea145a31cfe332c758720f71d3c /src/Evaluator.hs
parent4e60f9745e09959d0ce82810998d683372c0a1d4 (diff)
init
Diffstat (limited to 'src/Evaluator.hs')
-rw-r--r--src/Evaluator.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Evaluator.hs b/src/Evaluator.hs
new file mode 100644
index 0000000..f264ee0
--- /dev/null
+++ b/src/Evaluator.hs
@@ -0,0 +1,22 @@
1module Evaluator (
2 eval
3 ) where
4
5import Operators
6import Parser
7import Text.ParserCombinators.Parsec
8
9apply :: String -> [Expr] -> Expr
10apply fn args =
11 case lookup fn primitives of
12 Just f -> f args
13 _ -> BoolLiteral False -- TODO: error out instead
14
15eval :: Expr -> Expr
16eval v@(StringLiteral s) = v
17eval v@(IntLiteral i) = v
18eval v@(BoolLiteral b) = v
19-- handle quotes as literals
20eval (List[Id "quote", val]) = val
21eval (List (Id fn : args)) = apply fn $ map eval args
22