blob: 35e473f4498805b17ba9b7b3bf927784f61b2ef0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Language.Bs.Repl (
mainLoop
) where
import Control.Monad.Trans
import Data.String
import Data.Text as T
import Language.Bs.Eval
import Protolude
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
|