From 347fc15ba81edba5974aaad87639b88856b82838 Mon Sep 17 00:00:00 2001 From: darkf Date: Tue, 17 Dec 2013 00:55:02 -0800 Subject: [PATCH] implement globals() and locals() --- Interp.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Interp.hs b/Interp.hs index abd92d9..925d727 100644 --- a/Interp.hs +++ b/Interp.hs @@ -189,6 +189,14 @@ _newStdEnv (TupleV []) = do let (_,[stdEnv]) = initialState return $ toDict stdEnv +_globals (TupleV []) = do + (_, env) <- get + return $ toDict (last env) + +_locals (TupleV []) = do + (_, locals:_) <- get + return $ toDict locals + -- import a module name as a module _Import (StrV modname) = do (h,env) <- get -- save current state @@ -234,6 +242,8 @@ initialState = ([stdout, stdin], ("fopen", Builtin $ BIF _fopen), ("sockopen", Builtin $ BIF _sockopen), ("itos", Builtin $ BIF _itos), + ("globals", Builtin $ BIF _globals), + ("locals", Builtin $ BIF _locals), ("newStdEnv", Builtin $ BIF _newStdEnv), ("import", Builtin $ BIF _Import)]])