summaryrefslogtreecommitdiff
path: root/main.hs
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2016-06-16 23:24:47 +0200
committertomsmeding <tom.smeding@gmail.com>2016-06-16 23:24:47 +0200
commitdd3db844dd49451f28d044cd1d2fd71430d73686 (patch)
treecd76d7ad6efbf2d2e4760695d39cb48bb479a936 /main.hs
Initial
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