Merge remote-tracking branch 'kanaka/master' into fsharp
[jackhill/mal.git] / crystal / step1_read_print.cr
1 #! /usr/bin/env crystal run
2
3 require "./readline"
4 require "./reader"
5 require "./printer"
6
7 # Note:
8 # Employed downcase names because Crystal prohibits uppercase names for methods
9
10 module Mal
11 extend self
12
13 def read(str)
14 read_str str
15 end
16
17 def eval(x)
18 x
19 end
20
21 def print(result)
22 pr_str(result, true)
23 end
24
25 def rep(str)
26 print(eval(read(str)))
27 end
28 end
29
30 while line = my_readline("user> ")
31 begin
32 puts Mal.rep(line)
33 rescue e
34 STDERR.puts e
35 end
36 end