Commit | Line | Data |
---|---|---|
31690700 JM |
1 | (ns step0-repl |
2 | (:require [readline])) | |
3 | ||
4 | ||
5 | ;; read | |
6 | (defn READ [& [strng]] | |
7 | (let [line (if strng strng (read-line))] | |
8 | strng)) | |
9 | ||
10 | ;; eval | |
11 | (defn EVAL [ast env] | |
12 | (eval (read-string ast))) | |
13 | ||
14 | ||
15 | (defn PRINT [exp] | |
16 | exp) | |
17 | ||
18 | ;; repl | |
19 | (defn rep [strng] (PRINT (EVAL (READ strng), {}))) | |
20 | ||
21 | (defn -main [& args] | |
22 | (loop [] | |
23 | (let [line (readline/readline "user> ")] | |
24 | (when line | |
25 | (println (rep line)) | |
26 | (recur))))) |