Adds "compiler" and CLI argument handling

This commit is contained in:
James Eversole
2024-12-29 21:49:57 -06:00
parent 467e11edb3
commit 2abeab9c04
7 changed files with 69 additions and 12 deletions

View File

@ -12,10 +12,10 @@ import System.Console.Haskeline
import qualified Data.Map as Map
repl :: Map.Map String T -> IO ()
repl :: Env -> IO ()
repl env = runInputT defaultSettings (loop env)
where
loop :: Map.Map String T -> InputT IO ()
loop :: Env -> InputT IO ()
loop env = do
minput <- getInputLine "tricu < "
case minput of
@ -28,7 +28,7 @@ repl env = runInputT defaultSettings (loop env)
newEnv <- liftIO $ (processInput env input `catch` errorHandler env)
loop newEnv
processInput :: Map.Map String T -> String -> IO (Map.Map String T)
processInput :: Env -> String -> IO (Env)
processInput env input = do
let clearEnv = Map.delete "__result" env
newEnv = evalSingle clearEnv (parseSingle input)
@ -39,7 +39,7 @@ repl env = runInputT defaultSettings (loop env)
Nothing -> return ()
return newEnv
errorHandler :: Map.Map String T -> SomeException -> IO (Map.Map String T)
errorHandler :: Env -> SomeException -> IO (Env)
errorHandler env e = do
putStrLn $ "Error: " ++ show e
return env