From 04c227e0e9992eb2aaa138a9a55df8cf024e9dea Mon Sep 17 00:00:00 2001 From: darkf Date: Wed, 23 Oct 2013 01:59:15 -0700 Subject: [PATCH] fix calls not restoring environment --- interp.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interp.hs b/interp.hs index 5a407c9..ab3ddab 100644 --- a/interp.hs +++ b/interp.hs @@ -154,9 +154,9 @@ eval (Call name arg) = get >>= \(h,env) -> Just fn@(FnV cls _) -> do arg' <- eval arg put (h,cls) -- enter closure env - let v = apply fn arg' + v <- apply fn arg' put (h,env) -- restore env - v + return v Just fn@(Builtin _) -> eval arg >>= apply fn Nothing -> error $ "call: name " ++ name ++ " doesn't exist or is not a function"