blob: f264ee0cfbc13317a96044f3c6dbd54a5b661e7e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
module Evaluator (
eval
) where
import Operators
import Parser
import Text.ParserCombinators.Parsec
apply :: String -> [Expr] -> Expr
apply fn args =
case lookup fn primitives of
Just f -> f args
_ -> BoolLiteral False -- TODO: error out instead
eval :: Expr -> Expr
eval v@(StringLiteral s) = v
eval v@(IntLiteral i) = v
eval v@(BoolLiteral b) = v
-- handle quotes as literals
eval (List[Id "quote", val]) = val
eval (List (Id fn : args)) = apply fn $ map eval args
|