load-file: accept empty file or final comment, return nil
[jackhill/mal.git] / crystal / step1_read_print.cr
index 9da58c3..4d71958 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/env crystal run
 
-require "./readline"
+require "readline"
 require "./reader"
 require "./printer"
 
@@ -15,7 +15,7 @@ module Mal
   end
 
   def eval(x)
-      x
+    x
   end
 
   def print(result)
@@ -27,10 +27,12 @@ module Mal
   end
 end
 
-while line = my_readline("user> ")
+while line = Readline.readline("user> ", true)
   begin
     puts Mal.rep(line)
+  rescue e : Mal::RuntimeException
+    STDERR.puts "Error: #{pr_str(e.thrown, true)}"
   rescue e
-    STDERR.puts e
+    STDERR.puts "Error: #{e}"
   end
 end