diff --git a/hsilop.hs b/hsilop.hs index eb88440..41316bc 100644 --- a/hsilop.hs +++ b/hsilop.hs @@ -5,18 +5,18 @@ import Data.Maybe import Text.Read import Text.Printf import Control.Monad -import System.Console.Readline +import System.Console.Haskeline main :: IO () -main = do - line <- readline "ꟼ " +main = runInputT defaultSettings repl + +repl :: InputT IO () +repl = do + line <- getInputLine "ꟼ " case fromMaybe "" line of - "" -> main "q" -> return () - exp -> do - putStrLn $ result (rpn exp) ++ "\n" - addHistory exp - main + "" -> outputStrLn "" >> repl + exp -> outputStrLn (result (rpn exp) ++ "\n") >> repl -- Pretty print RPN result/errors