Julia: step7.
[jackhill/mal.git] / julia / core.jl
1 module core
2
3 import reader
4 using printer
5
6 export ns
7
8 ns = {
9 symbol("=") => (a,b) -> a == b,
10
11 symbol("pr-str") => (a...) -> join(map((e)->pr_str(e, true),a)," "),
12 :str => (a...) -> join(map((e)->pr_str(e, false),a),""),
13 :prn => (a...) -> println(join(map((e)->pr_str(e, true),a)," ")),
14 :println => (a...) -> println(join(map((e)->pr_str(e, false),a)," ")),
15 symbol("read-string") => (a) -> reader.read_str(a),
16 :slurp => (a) -> readall(open(a)),
17
18 :< => <,
19 :<= => <=,
20 :> => >,
21 :>= => >=,
22 :+ => +,
23 :- => -,
24 symbol("*") => *,
25 :/ => div,
26
27 :list => (a...) -> Any[a...],
28 symbol("list?") => (a) -> isa(a, Array),
29
30 :cons => (a,b) -> [Any[a], Any[b...]],
31 :concat => (a...) -> [a...],
32 symbol("empty?") => isempty,
33 :count => (a) -> a == nothing ? 0 : length(a),
34 }
35
36 end