Merge pull request #281 from sebras/master
[jackhill/mal.git] / skew / step1_read_print.sk
1 def READ(str string) MalVal {
2 return read_str(str)
3 }
4
5 def EVAL(ast MalVal, env StringMap<string>) MalVal {
6 return ast
7 }
8
9 def PRINT(exp MalVal) string {
10 return exp?.print(true)
11 }
12
13 def REP(str string) string {
14 return PRINT(EVAL(READ(str), {}))
15 }
16
17 @entry
18 def main {
19 var line string
20 while (line = readLine("user> ")) != null {
21 if line == "" { continue }
22 try {
23 printLn(REP(line))
24 }
25 catch e MalError {
26 printLn("Error: \(e.message)")
27 }
28 }
29 }