bash, c, clojure, coffee, es6, js: add seq/string?
[jackhill/mal.git] / miniMAL / core.json
CommitLineData
c5d30235
JM
1["do",
2
2774a151
JM
3["def", "_path", ["require", ["`", "path"]]],
4
5["def", "_node_readline", ["require", [".", "_path", ["`", "resolve"],
6 ["`", "."],
7 ["`", "node_readline.js"]]]],
8
c5d30235
JM
9["def", "div", ["fn", ["a", "b"], ["parseInt", ["/", "a", "b"]]]],
10
d90c7844
JM
11["def", "time-ms", ["fn", [],
12 [".", ["new", "Date"], ["`", "getTime"]]]],
13
32045546
JM
14
15["def", "assoc", ["fn", ["src-hm", "&", "kvs"],
16 ["let", ["hm", ["clone", "src-hm"]],
17 ["assocs!", "hm", "kvs"]]]],
18
19["def", "dissoc", ["fn", ["src-hm", "&", "ks"],
20 ["let", ["hm", ["clone", "src-hm"]],
21 ["do",
22 ["map", ["fn", ["k"], ["del", "hm", "k"]], "ks"],
23 "hm"]]]],
24
25["def", "_get", ["fn", ["obj", "key"],
26 ["if", ["nil?", "obj"],
27 null,
28 ["if", ["contains?", "obj", "key"],
29 ["get", "obj", "key"],
30 null]]]],
31
c5d30235
JM
32["def", "_count", ["fn", ["a"],
33 ["if", ["=", null, "a"],
34 0,
35 ["count", "a"]]]],
36
f618f6a1
JM
37["def", "_nth", ["fn", ["seq", "idx"],
38 ["if", [">=", "idx", ["count", "seq"]],
39 ["throw", "nth: index out of range"],
40 ["nth", "seq", "idx"]]]],
41
42["def", "_first", ["fn", ["seq"],
43 ["if", ["empty?", "seq"],
44 null,
45 ["first", "seq"]]]],
46
75048743
DM
47["def", "_rest", ["fn", ["seq"],
48 ["if", ["empty?", "seq"],
49 ["`", []],
50 ["rest", "seq"]]]],
51
2774a151
JM
52["def", "_apply", ["fn", ["f", "&", "args"],
53 ["let", ["fn", ["if", ["malfunc?", "f"], ["get", "f", ["`", "fn"]], "f"],
54 "fargs", ["concat", ["slice", "args", 0, ["-", ["count", "args"], 1]],
55 ["nth", "args", ["-", ["count", "args"], 1]]]],
56 ["apply", "fn", "fargs"]]]],
57
58["def", "_map", ["fn", ["f", "seq"],
59 ["let", ["fn", ["if", ["malfunc?", "f"], ["get", "f", ["`", "fn"]], "f"]],
60 ["map", "fn", "seq"]]]],
61
ad28cf3c
JM
62["def", "with_meta", ["fn", ["obj", "m"],
63 ["let", ["new-obj", ["clone", "obj"]],
64 ["do",
65 ["set", "new-obj", ["`", "__meta__"], "m"],
66 "new-obj"]]]],
67
68["def", "meta", ["fn", ["obj"],
69 ["if", ["or", ["sequential?", "obj"],
70 ["map?", "obj"],
71 ["malfunc?", "obj"]],
72 ["if", ["contains?", "obj", ["`", "__meta__"]],
73 ["get", "obj", ["`", "__meta__"]],
74 null],
75 null]]],
76
8cfab776
JM
77["def", "reset!", ["fn", ["atm", "val"],
78 ["set", "atm", ["`", "val"], "val"]]],
79
80["def", "swap!", ["fn", ["atm", "f", "&", "args"],
81 ["let", ["fn", ["if", ["malfunc?", "f"], ["get", "f", ["`", "fn"]], "f"],
82 "fargs", ["cons", ["get", "atm", ["`", "val"]], "args"],
83 "val", ["apply", "fn", "fargs"]],
84 ["do",
85 ["set", "atm", ["`", "val"], "val"],
86 "val"]]]],
ad28cf3c 87
c5d30235
JM
88["def", "core-ns",
89 ["hash-map",
2774a151
JM
90 ["`", "="], "equal?",
91 ["`", "throw"], "throw",
92
93 ["`", "nil?"], "nil?",
94 ["`", "true?"], "true?",
95 ["`", "false?"], "false?",
96 ["`", "symbol"], "symbol",
97 ["`", "symbol?"], "symbol?",
32045546
JM
98 ["`", "keyword"], "keyword",
99 ["`", "keyword?"], "keyword?",
c5d30235
JM
100
101 ["`", "pr-str"], ["fn", ["&", "a"], ["pr-list", "a", true, ["`", " "]]],
102 ["`", "str"], ["fn", ["&", "a"], ["pr-list", "a", false, ["`", ""]]],
103 ["`", "prn"], ["fn", ["&", "a"],
104 ["do",
105 ["println", ["pr-list", "a", true, ["`", " "]]],
106 null]],
107 ["`", "println"], ["fn", ["&", "a"],
108 ["do",
109 ["println", ["pr-list", "a", false, ["`", " "]]],
110 null]],
9d8f0299 111 ["`", "read-string"], "read-str",
2774a151
JM
112 ["`", "readline"], ["fn", ["p"],
113 [".", "_node_readline", ["`", "readline"], "p"]],
9d8f0299 114 ["`", "slurp"], "slurp",
c5d30235
JM
115
116 ["`", "<"], "<",
117 ["`", "<="], "<=",
118 ["`", ">"], ">",
119 ["`", ">="], ">=",
120 ["`", "+"], "+",
121 ["`", "-"], "-",
122 ["`", "*"], "*",
123 ["`", "/"], "div",
d90c7844 124 ["`", "time-ms"], "time-ms",
c5d30235 125
32045546
JM
126 ["`", "list"], "list",
127 ["`", "list?"], "list?",
128 ["`", "vector"], "vector",
129 ["`", "vector?"], "vector?",
130 ["`", "hash-map"], "hash-map",
131 ["`", "assoc"], "assoc",
132 ["`", "dissoc"], "dissoc",
133 ["`", "map?"], "map?",
134 ["`", "get"], "_get",
135 ["`", "contains?"], "contains?",
136 ["`", "keys"], "keys",
137 ["`", "vals"], "vals",
138
139 ["`", "sequential?"], "sequential?",
1981bf57
JM
140 ["`", "cons"], "cons",
141 ["`", "concat"], "concat",
f618f6a1
JM
142 ["`", "nth"], "_nth",
143 ["`", "first"], "_first",
75048743 144 ["`", "rest"], "_rest",
c5d30235 145 ["`", "empty?"], "empty?",
8cfab776
JM
146 ["`", "count"], "_count",
147 ["`", "apply"], "_apply",
148 ["`", "map"], "_map",
149 ["`", "conj"], null,
ad28cf3c
JM
150
151 ["`", "with-meta"], "with_meta",
8cfab776
JM
152 ["`", "meta"], "meta",
153 ["`", "atom"], "atom",
154 ["`", "atom?"], "atom?",
155 ["`", "deref"], ["fn", ["a"], ["get", "a", ["`", "val"]]],
156 ["`", "reset!"], "reset!",
157 ["`", "swap!"], "swap!"]],
c5d30235
JM
158
159null]