recursive let bindings in evaluation
This commit is contained in:
parent
ec8f875ff7
commit
267c8cf92d
|
@ -109,12 +109,12 @@ evalExpr = cata phi
|
||||||
pure mergedEnv
|
pure mergedEnv
|
||||||
_ -> error "invalid evaluation environment"
|
_ -> error "invalid evaluation environment"
|
||||||
|
|
||||||
-- TODO: recursive binding
|
|
||||||
phi (NLet binds e) = \env -> case env of
|
phi (NLet binds e) = \env -> case env of
|
||||||
(Fix (NVSet env')) -> do
|
(Fix (NVSet env')) -> do
|
||||||
letenv <- evalBinds False env binds
|
rec
|
||||||
let newenv = Map.union letenv env'
|
mergedEnv <- pure $ Fix $ NVSet $ evaledBinds `Map.union` env'
|
||||||
e . Fix . NVSet $ newenv
|
evaledBinds <- evalBinds True mergedEnv binds
|
||||||
|
e mergedEnv
|
||||||
_ -> error "invalid evaluation environment"
|
_ -> error "invalid evaluation environment"
|
||||||
|
|
||||||
phi (NIf cond t f) = \env -> do
|
phi (NIf cond t f) = \env -> do
|
||||||
|
|
Loading…
Reference in a new issue