Commit | Line | Data |
---|---|---|
a7081401 HÖS |
1 | use v6; |
2 | use lib IO::Path.new($?FILE).dirname; | |
3 | use reader; | |
4 | use printer; | |
5 | use types; | |
6 | ||
7 | sub read ($str) { | |
8 | return read_str($str); | |
9 | } | |
10 | ||
11 | sub eval ($ast) { | |
12 | return $ast; | |
13 | } | |
14 | ||
15 | sub print ($exp) { | |
16 | return pr_str($exp, True); | |
17 | } | |
18 | ||
19 | sub rep ($str) { | |
20 | return print(eval(read($str))); | |
21 | } | |
22 | ||
23 | sub MAIN { | |
24 | while (my $line = prompt 'user> ').defined { | |
25 | say rep($line); | |
26 | CATCH { | |
27 | when X::MalException { .Str.say } | |
28 | } | |
29 | } | |
30 | } |