recursive let bindings in evaluation

This commit is contained in:
Anders Papitto 2015-12-13 22:12:37 -08:00
parent ec8f875ff7
commit 267c8cf92d
1 changed files with 4 additions and 4 deletions

View File

@ -109,12 +109,12 @@ evalExpr = cata phi
pure mergedEnv
_ -> error "invalid evaluation environment"
-- TODO: recursive binding
phi (NLet binds e) = \env -> case env of
(Fix (NVSet env')) -> do
letenv <- evalBinds False env binds
let newenv = Map.union letenv env'
e . Fix . NVSet $ newenv
rec
mergedEnv <- pure $ Fix $ NVSet $ evaledBinds `Map.union` env'
evaledBinds <- evalBinds True mergedEnv binds
e mergedEnv
_ -> error "invalid evaluation environment"
phi (NIf cond t f) = \env -> do