Skip to content

Commit

Permalink
Towards an environment for variables
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Pauley committed Aug 28, 2010
1 parent 476b902 commit 02f09d4
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions evalapply.hs
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,10 @@ defineVar envRef var value = do
env <- readIORef envRef
writeIORef envRef ((var, valueRef) : env)
return value

bindVars :: Env -> [(String, LispVal)] -> IO Env
bindVars envRef bindings = readIORef envRef >>= extendEnv bindings >>= newIORef
where extendEnv bindings env = liftM (++ env) (mapM addBinding bindings)
addBinding (var, value) = do ref <- newIORef value
return (var, ref)

0 comments on commit 02f09d4

Please sign in to comment.