Commit | Line | Data |
---|---|---|
b76aa73b JM |
1 | import Control.Monad |
2 | ||
fa9a9758 JM |
3 | import Readline (readline, load_history) |
4 | ||
b76aa73b JM |
5 | -- read |
6 | mal_read str = str | |
7 | ||
8 | -- eval | |
9 | eval ast env = ast | |
10 | ||
11 | ||
12 | mal_print exp = exp | |
13 | ||
14 | -- repl | |
15 | rep line = mal_print $ eval (mal_read line) "" | |
16 | ||
17 | repl_loop = do | |
fa9a9758 JM |
18 | line <- readline "user> " |
19 | case line of | |
20 | Nothing -> return () | |
21 | Just "" -> repl_loop | |
22 | Just str -> do | |
23 | putStrLn $ rep str | |
24 | repl_loop | |
b76aa73b | 25 | |
fa9a9758 JM |
26 | main = do |
27 | load_history | |
28 | repl_loop |