Last active
September 16, 2018 10:47
-
-
Save Rizary/55c2910205027a46a0c6a42485460afe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
evaluate :: Program -> Value | |
evaluate [Bind _ _ _ e] = evalE E.empty e | |
evaluate bs = evalE E.empty (Let bs (Var "main")) | |
evalE :: VEnv -> Exp -> Value | |
-- Handle Variable case | |
evalE venv (Var var) = | |
case E.lookup venv var of | |
Just e -> e | |
Nothing -> Nil | |
-- Handle Num case | |
evalE venv (Num int) = I int | |
-- Handle Conditional case | |
evalE venv (Con "True") = B True | |
evalE venv (Con "False") = B False | |
-- Handle List case | |
evalE venv (Con "Nil") = Nil | |
-- Handle IF THEN ELSE | |
evalE venv (If exprA exprB exprC) = | |
case evalE venv exprA of | |
B True -> evalE venv exprB | |
_ -> evalE venv exprC |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment