module Main where import Control.Monad import Data.Either import Data.Maybe import System.Console.Readline import Simplify import Parser import PrettyPrint repl :: IO () repl = do mline <- readline "> " case mline of Nothing -> return () -- EOF Just "" -> repl Just line -> do addHistory line let eexpr = parseExpression line either (putStrLn . ("Error: "++)) handleExpression eexpr repl where handleExpression expr = do print expr let sim = simplify expr print sim main :: IO () main = repl