{-# LANGUAGE OverloadedStrings #-} module Language.Bs.Repl ( mainLoop, ) where import Language.Bs.Eval import Data.Text as T import Control.Monad.Trans import System.Console.Haskeline type Repl a = InputT IO a mainLoop :: IO () mainLoop = runInputT defaultSettings repl repl :: Repl () repl = do minput <- getInputLine "bs> " case minput of Nothing -> outputStrLn "bye." Just input -> liftIO (process input) >> repl --Just input -> (liftIO $ processToAST input) >> repl process :: String -> IO () process str = do res <- safeExec $ evalText $ T.pack str either putStrLn return res processToAST :: String -> IO () processToAST str = print $ runParseTest $ T.pack str