summaryrefslogtreecommitdiff
path: root/main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'main.hs')
-rw-r--r--main.hs31
1 files changed, 31 insertions, 0 deletions
diff --git a/main.hs b/main.hs
new file mode 100644
index 0000000..5beb0e4
--- /dev/null
+++ b/main.hs
@@ -0,0 +1,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