summaryrefslogtreecommitdiff
path: root/main.hs
blob: 5beb0e422d37563bcd5fcf06891a3953a861da62 (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
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