diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-10-05 14:34:15 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:21:53 +0200 |
| commit | 7a6dd411a5d8e515fa5fa3d32650565c2e8a5f1b (patch) | |
| tree | 4813eb70f0ccb49593231e9082d1f79cdcc6b25d /src/Utils.hs | |
| parent | 78fac664f39dc52818fb99264c258b822df7d5b9 (diff) | |
Refactor Env out of LFunction
Diffstat (limited to 'src/Utils.hs')
| -rw-r--r-- | src/Utils.hs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/Utils.hs b/src/Utils.hs index 6354a87..8ee2056 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -34,6 +34,25 @@ type LContext a = StateT LState (ExceptT LException IO) a runL :: LState -> LContext a -> IO (Either LException (a, LState)) runL s lc = runExceptT $ (flip runStateT) s lc +getEnv :: LContext Env +getEnv = do + s <- get + return $ stateEnv s + +getConfig :: LContext Config +getConfig = do + s <- get + return $ stateConfig s + +putEnv :: Env -> LContext () +putEnv env = do + modify (\s -> s { stateEnv = env }) + +insertEnv :: String -> AST -> LContext () +insertEnv k v = do + env <- getEnv + putEnv $ M.insert k v env + data Token = Token { tokenContent :: String, tokenRow :: Int, @@ -47,7 +66,7 @@ instance (Eq Token) where instance (Show Token) where show token = show $ tokenContent token -type LFunction = (Env -> AST -> LContext AST) +type LFunction = AST -> LContext AST data ASTNode = ASTInteger Int |
