aboutsummaryrefslogtreecommitdiff
path: root/clojure/src/step0_repl.clj
diff options
context:
space:
mode:
Diffstat (limited to 'clojure/src/step0_repl.clj')
-rw-r--r--clojure/src/step0_repl.clj26
1 files changed, 26 insertions, 0 deletions
diff --git a/clojure/src/step0_repl.clj b/clojure/src/step0_repl.clj
new file mode 100644
index 0000000..7a050c7
--- /dev/null
+++ b/clojure/src/step0_repl.clj
@@ -0,0 +1,26 @@
+(ns step0-repl
+ (:require [readline]))
+
+
+;; read
+(defn READ [& [strng]]
+ (let [line (if strng strng (read-line))]
+ strng))
+
+;; eval
+(defn EVAL [ast env]
+ (eval (read-string ast)))
+
+;; print
+(defn PRINT [exp]
+ exp)
+
+;; repl
+(defn rep [strng] (PRINT (EVAL (READ strng), {})))
+
+(defn -main [& args]
+ (loop []
+ (let [line (readline/readline "user> ")]
+ (when line
+ (println (rep line))
+ (recur)))))