@calcit/procs 0.5.0-a9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/calcit-data.js +37 -18
- package/lib/calcit.procs.js +73 -73
- package/lib/custom-formatter.js +11 -11
- package/lib/js-cirru.js +20 -20
- package/lib/js-list.js +190 -117
- package/lib/js-map.js +194 -130
- package/lib/js-record.js +7 -7
- package/lib/js-set.js +5 -5
- package/lib/js-tuple.js +4 -4
- package/package.json +5 -5
- package/ts-src/calcit-data.ts +37 -18
- package/ts-src/calcit.procs.ts +95 -95
- package/ts-src/custom-formatter.ts +10 -10
- package/ts-src/js-cirru.ts +22 -22
- package/ts-src/js-list.ts +195 -121
- package/ts-src/js-map.ts +216 -135
- package/ts-src/js-primes.ts +5 -3
- package/ts-src/js-record.ts +6 -6
- package/ts-src/js-set.ts +18 -5
- package/ts-src/js-tuple.ts +4 -4
package/lib/calcit-data.js
CHANGED
|
@@ -2,9 +2,9 @@ import { overwriteHashGenerator, valueHash, mergeValueHash } from "@calcit/terna
|
|
|
2
2
|
import { overwriteComparator } from "@calcit/ternary-tree";
|
|
3
3
|
import { overwriteMapComparator } from "./js-map";
|
|
4
4
|
import { CalcitRecord, fieldsEqual } from "./js-record";
|
|
5
|
-
import { CalcitMap } from "./js-map";
|
|
5
|
+
import { CalcitMap, CalcitSliceMap } from "./js-map";
|
|
6
6
|
import "./js-primes";
|
|
7
|
-
import { CalcitList } from "./js-list";
|
|
7
|
+
import { CalcitList, CalcitSliceList } from "./js-list";
|
|
8
8
|
import { CalcitSet, overwriteSetComparator } from "./js-set";
|
|
9
9
|
import { CalcitTuple } from "./js-tuple";
|
|
10
10
|
// we have to inject cache in a dirty way in some cases
|
|
@@ -51,10 +51,10 @@ export class CalcitRecur {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
export let isNestedCalcitData = (x) => {
|
|
54
|
-
if (x instanceof CalcitList) {
|
|
54
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
55
55
|
return x.len() > 0;
|
|
56
56
|
}
|
|
57
|
-
if (x instanceof CalcitMap) {
|
|
57
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
58
58
|
return x.len() > 0;
|
|
59
59
|
}
|
|
60
60
|
if (x instanceof CalcitRecord) {
|
|
@@ -66,10 +66,10 @@ export let isNestedCalcitData = (x) => {
|
|
|
66
66
|
return false;
|
|
67
67
|
};
|
|
68
68
|
export let tipNestedCalcitData = (x) => {
|
|
69
|
-
if (x instanceof CalcitList) {
|
|
69
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
70
70
|
return "'[]...";
|
|
71
71
|
}
|
|
72
|
-
if (x instanceof CalcitMap) {
|
|
72
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
73
73
|
return "'{}...";
|
|
74
74
|
}
|
|
75
75
|
if (x instanceof CalcitRecord) {
|
|
@@ -120,9 +120,9 @@ export function findInFields(xs, y) {
|
|
|
120
120
|
return pos;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
if (y
|
|
123
|
+
if (y === xs[lower])
|
|
124
124
|
return lower;
|
|
125
|
-
if (y
|
|
125
|
+
if (y === xs[upper])
|
|
126
126
|
return upper;
|
|
127
127
|
return -1;
|
|
128
128
|
}
|
|
@@ -148,7 +148,7 @@ export let castKwd = (x) => {
|
|
|
148
148
|
if (x instanceof CalcitSymbol) {
|
|
149
149
|
return kwd(x.value);
|
|
150
150
|
}
|
|
151
|
-
throw new Error(
|
|
151
|
+
throw new Error(`Cannot cast this to keyword: ${x}`);
|
|
152
152
|
};
|
|
153
153
|
export var refsRegistry = new Map();
|
|
154
154
|
let defaultHash_nil = valueHash("nil:");
|
|
@@ -229,6 +229,16 @@ let hashFunction = (x) => {
|
|
|
229
229
|
}
|
|
230
230
|
return base;
|
|
231
231
|
}
|
|
232
|
+
if (x instanceof CalcitSliceList) {
|
|
233
|
+
let base = defaultHash_list;
|
|
234
|
+
// low-level code for perf
|
|
235
|
+
for (let idx = x.start; idx < x.end; idx++) {
|
|
236
|
+
let item = x.value[idx];
|
|
237
|
+
base = mergeValueHash(base, hashFunction(item));
|
|
238
|
+
}
|
|
239
|
+
x.cachedHash = base;
|
|
240
|
+
return base;
|
|
241
|
+
}
|
|
232
242
|
if (x instanceof CalcitList) {
|
|
233
243
|
let base = defaultHash_list;
|
|
234
244
|
for (let item of x.items()) {
|
|
@@ -237,6 +247,15 @@ let hashFunction = (x) => {
|
|
|
237
247
|
x.cachedHash = base;
|
|
238
248
|
return base;
|
|
239
249
|
}
|
|
250
|
+
if (x instanceof CalcitSliceMap) {
|
|
251
|
+
let base = defaultHash_map;
|
|
252
|
+
for (let [k, v] of x.pairs()) {
|
|
253
|
+
base = mergeValueHash(base, hashFunction(k));
|
|
254
|
+
base = mergeValueHash(base, hashFunction(v));
|
|
255
|
+
}
|
|
256
|
+
x.cachedHash = base;
|
|
257
|
+
return base;
|
|
258
|
+
}
|
|
240
259
|
if (x instanceof CalcitMap) {
|
|
241
260
|
let base = defaultHash_map;
|
|
242
261
|
for (let [k, v] of x.pairs()) {
|
|
@@ -300,10 +319,10 @@ export let toString = (x, escaped) => {
|
|
|
300
319
|
if (x instanceof CalcitKeyword) {
|
|
301
320
|
return x.toString();
|
|
302
321
|
}
|
|
303
|
-
if (x instanceof CalcitList) {
|
|
322
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
304
323
|
return x.toString();
|
|
305
324
|
}
|
|
306
|
-
if (x instanceof CalcitMap) {
|
|
325
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
307
326
|
return x.toString();
|
|
308
327
|
}
|
|
309
328
|
if (x instanceof CalcitSet) {
|
|
@@ -349,14 +368,14 @@ export let to_js_data = (x, addColon = false) => {
|
|
|
349
368
|
}
|
|
350
369
|
return Symbol(x.value);
|
|
351
370
|
}
|
|
352
|
-
if (x instanceof CalcitList) {
|
|
371
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
353
372
|
var result = [];
|
|
354
373
|
for (let item of x.items()) {
|
|
355
374
|
result.push(to_js_data(item, addColon));
|
|
356
375
|
}
|
|
357
376
|
return result;
|
|
358
377
|
}
|
|
359
|
-
if (x instanceof CalcitMap) {
|
|
378
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
360
379
|
let result = {};
|
|
361
380
|
for (let [k, v] of x.pairs()) {
|
|
362
381
|
var key = to_js_data(k, addColon);
|
|
@@ -390,7 +409,7 @@ export let _$n_map_$o_get = function (xs, k) {
|
|
|
390
409
|
if (arguments.length !== 2) {
|
|
391
410
|
throw new Error("map &get takes 2 arguments");
|
|
392
411
|
}
|
|
393
|
-
if (xs instanceof CalcitMap)
|
|
412
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
|
|
394
413
|
return xs.get(k);
|
|
395
414
|
throw new Error("Does not support `&get` on this type");
|
|
396
415
|
};
|
|
@@ -434,8 +453,8 @@ export let _$n__$e_ = (x, y) => {
|
|
|
434
453
|
}
|
|
435
454
|
return false;
|
|
436
455
|
}
|
|
437
|
-
if (x instanceof CalcitList) {
|
|
438
|
-
if (y instanceof CalcitList) {
|
|
456
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
457
|
+
if (y instanceof CalcitList || y instanceof CalcitSliceList) {
|
|
439
458
|
if (x.len() !== y.len()) {
|
|
440
459
|
return false;
|
|
441
460
|
}
|
|
@@ -451,8 +470,8 @@ export let _$n__$e_ = (x, y) => {
|
|
|
451
470
|
}
|
|
452
471
|
return false;
|
|
453
472
|
}
|
|
454
|
-
if (x instanceof CalcitMap) {
|
|
455
|
-
if (y instanceof CalcitMap) {
|
|
473
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
474
|
+
if (y instanceof CalcitMap || y instanceof CalcitSliceMap) {
|
|
456
475
|
if (x.len() !== y.len()) {
|
|
457
476
|
return false;
|
|
458
477
|
}
|
package/lib/calcit.procs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
// CALCIT VERSION
|
|
3
|
-
export const calcit_version = "0.5.0
|
|
4
|
-
import
|
|
3
|
+
export const calcit_version = "0.5.0";
|
|
4
|
+
import "@calcit/ternary-tree";
|
|
5
5
|
import { parse } from "@cirru/parser.ts";
|
|
6
6
|
import { writeCirruCode } from "@cirru/writer.ts";
|
|
7
7
|
import "./js-primes";
|
|
@@ -16,8 +16,8 @@ export * from "./js-primes";
|
|
|
16
16
|
export * from "./js-tuple";
|
|
17
17
|
export * from "./custom-formatter";
|
|
18
18
|
export * from "./js-cirru";
|
|
19
|
-
import { CalcitList, foldl } from "./js-list";
|
|
20
|
-
import { CalcitMap } from "./js-map";
|
|
19
|
+
import { CalcitList, CalcitSliceList, foldl } from "./js-list";
|
|
20
|
+
import { CalcitMap, CalcitSliceMap } from "./js-map";
|
|
21
21
|
import { CalcitSet } from "./js-set";
|
|
22
22
|
import { CalcitTuple } from "./js-tuple";
|
|
23
23
|
import { to_calcit_data, extract_cirru_edn } from "./js-cirru";
|
|
@@ -32,10 +32,10 @@ export let type_of = (x) => {
|
|
|
32
32
|
if (x instanceof CalcitKeyword) {
|
|
33
33
|
return kwd("keyword");
|
|
34
34
|
}
|
|
35
|
-
if (x instanceof CalcitList) {
|
|
35
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
36
36
|
return kwd("list");
|
|
37
37
|
}
|
|
38
|
-
if (x instanceof CalcitMap) {
|
|
38
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
39
39
|
return kwd("map");
|
|
40
40
|
}
|
|
41
41
|
if (x == null) {
|
|
@@ -76,7 +76,7 @@ export let print = (...xs) => {
|
|
|
76
76
|
console.log(xs.map((x) => toString(x, false)).join(" "));
|
|
77
77
|
};
|
|
78
78
|
export function _$n_list_$o_count(x) {
|
|
79
|
-
if (x instanceof CalcitList)
|
|
79
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList)
|
|
80
80
|
return x.len();
|
|
81
81
|
throw new Error(`expected a list ${x}`);
|
|
82
82
|
}
|
|
@@ -86,7 +86,7 @@ export function _$n_str_$o_count(x) {
|
|
|
86
86
|
throw new Error(`expected a string ${x}`);
|
|
87
87
|
}
|
|
88
88
|
export function _$n_map_$o_count(x) {
|
|
89
|
-
if (x instanceof CalcitMap)
|
|
89
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap)
|
|
90
90
|
return x.len();
|
|
91
91
|
throw new Error(`expected a map ${x}`);
|
|
92
92
|
}
|
|
@@ -101,17 +101,17 @@ export function _$n_set_$o_count(x) {
|
|
|
101
101
|
throw new Error(`expected a set ${x}`);
|
|
102
102
|
}
|
|
103
103
|
export let _$L_ = (...xs) => {
|
|
104
|
-
return new
|
|
104
|
+
return new CalcitSliceList(xs);
|
|
105
105
|
};
|
|
106
106
|
// single quote as alias for list
|
|
107
107
|
export let _SQUO_ = (...xs) => {
|
|
108
|
-
return new
|
|
108
|
+
return new CalcitSliceList(xs);
|
|
109
109
|
};
|
|
110
110
|
export let _$n__$M_ = (...xs) => {
|
|
111
111
|
if (xs.length % 2 !== 0) {
|
|
112
112
|
throw new Error("&map expects even number of arguments");
|
|
113
113
|
}
|
|
114
|
-
return new
|
|
114
|
+
return new CalcitSliceMap(xs);
|
|
115
115
|
};
|
|
116
116
|
export let defatom = (path, x) => {
|
|
117
117
|
let v = new CalcitRef(x, path);
|
|
@@ -151,7 +151,7 @@ export let _$n_str_$o_contains_$q_ = (xs, x) => {
|
|
|
151
151
|
throw new Error("string `contains?` expected a string");
|
|
152
152
|
};
|
|
153
153
|
export let _$n_list_$o_contains_$q_ = (xs, x) => {
|
|
154
|
-
if (xs instanceof CalcitList) {
|
|
154
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
155
155
|
if (typeof x != "number") {
|
|
156
156
|
throw new Error("Expected number index for detecting");
|
|
157
157
|
}
|
|
@@ -164,7 +164,7 @@ export let _$n_list_$o_contains_$q_ = (xs, x) => {
|
|
|
164
164
|
throw new Error("list `contains?` expected a list");
|
|
165
165
|
};
|
|
166
166
|
export let _$n_map_$o_contains_$q_ = (xs, x) => {
|
|
167
|
-
if (xs instanceof CalcitMap)
|
|
167
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
|
|
168
168
|
return xs.contains(x);
|
|
169
169
|
throw new Error("map `contains?` expected a map");
|
|
170
170
|
};
|
|
@@ -183,7 +183,7 @@ export let _$n_str_$o_includes_$q_ = (xs, x) => {
|
|
|
183
183
|
throw new Error("string includes? expected a string");
|
|
184
184
|
};
|
|
185
185
|
export let _$n_list_$o_includes_$q_ = (xs, x) => {
|
|
186
|
-
if (xs instanceof CalcitList) {
|
|
186
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
187
187
|
let size = xs.len();
|
|
188
188
|
for (let v of xs.items()) {
|
|
189
189
|
if (_$n__$e_(v, x)) {
|
|
@@ -195,7 +195,7 @@ export let _$n_list_$o_includes_$q_ = (xs, x) => {
|
|
|
195
195
|
throw new Error("list includes? expected a list");
|
|
196
196
|
};
|
|
197
197
|
export let _$n_map_$o_includes_$q_ = (xs, x) => {
|
|
198
|
-
if (xs instanceof CalcitMap) {
|
|
198
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap) {
|
|
199
199
|
for (let [k, v] of xs.pairs()) {
|
|
200
200
|
if (_$n__$e_(v, x)) {
|
|
201
201
|
return true;
|
|
@@ -225,7 +225,7 @@ export let _$n_list_$o_nth = function (xs, k) {
|
|
|
225
225
|
throw new Error("nth takes 2 arguments");
|
|
226
226
|
if (typeof k !== "number")
|
|
227
227
|
throw new Error("Expected number index for a list");
|
|
228
|
-
if (xs instanceof CalcitList)
|
|
228
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList)
|
|
229
229
|
return xs.get(k);
|
|
230
230
|
throw new Error("Does not support `nth` on this type");
|
|
231
231
|
};
|
|
@@ -249,7 +249,7 @@ export let _$n_record_$o_get = function (xs, k) {
|
|
|
249
249
|
export let _$n_list_$o_assoc = function (xs, k, v) {
|
|
250
250
|
if (arguments.length !== 3)
|
|
251
251
|
throw new Error("assoc takes 3 arguments");
|
|
252
|
-
if (xs instanceof CalcitList) {
|
|
252
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
253
253
|
if (typeof k !== "number") {
|
|
254
254
|
throw new Error("Expected number index for lists");
|
|
255
255
|
}
|
|
@@ -273,7 +273,7 @@ export let _$n_map_$o_assoc = function (xs, ...args) {
|
|
|
273
273
|
throw new Error("assoc takes at least 3 arguments");
|
|
274
274
|
if (args.length % 2 !== 0)
|
|
275
275
|
throw new Error("assoc expected odd arguments");
|
|
276
|
-
if (xs instanceof CalcitMap)
|
|
276
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
|
|
277
277
|
return xs.assoc(...args);
|
|
278
278
|
throw new Error("map `assoc` expected a map");
|
|
279
279
|
};
|
|
@@ -288,7 +288,7 @@ export let _$n_list_$o_assoc_before = function (xs, k, v) {
|
|
|
288
288
|
if (arguments.length !== 3) {
|
|
289
289
|
throw new Error("assoc takes 3 arguments");
|
|
290
290
|
}
|
|
291
|
-
if (xs instanceof CalcitList) {
|
|
291
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
292
292
|
if (typeof k !== "number") {
|
|
293
293
|
throw new Error("Expected number index for lists");
|
|
294
294
|
}
|
|
@@ -300,7 +300,7 @@ export let _$n_list_$o_assoc_after = function (xs, k, v) {
|
|
|
300
300
|
if (arguments.length !== 3) {
|
|
301
301
|
throw new Error("assoc takes 3 arguments");
|
|
302
302
|
}
|
|
303
|
-
if (xs instanceof CalcitList) {
|
|
303
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
304
304
|
if (typeof k !== "number") {
|
|
305
305
|
throw new Error("Expected number index for lists");
|
|
306
306
|
}
|
|
@@ -311,7 +311,7 @@ export let _$n_list_$o_assoc_after = function (xs, k, v) {
|
|
|
311
311
|
export let _$n_list_$o_dissoc = function (xs, k) {
|
|
312
312
|
if (arguments.length !== 2)
|
|
313
313
|
throw new Error("dissoc takes 2 arguments");
|
|
314
|
-
if (xs instanceof CalcitList) {
|
|
314
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
315
315
|
if (typeof k !== "number")
|
|
316
316
|
throw new Error("Expected number index for lists");
|
|
317
317
|
return xs.dissoc(k);
|
|
@@ -321,7 +321,7 @@ export let _$n_list_$o_dissoc = function (xs, k) {
|
|
|
321
321
|
export let _$n_map_$o_dissoc = function (xs, ...args) {
|
|
322
322
|
if (args.length < 1)
|
|
323
323
|
throw new Error("dissoc takes at least 2 arguments");
|
|
324
|
-
if (xs instanceof CalcitMap) {
|
|
324
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap) {
|
|
325
325
|
return xs.dissoc(...args);
|
|
326
326
|
}
|
|
327
327
|
throw new Error("`dissoc` expected a map");
|
|
@@ -355,7 +355,7 @@ export let remove_watch = (a, k) => {
|
|
|
355
355
|
return null;
|
|
356
356
|
};
|
|
357
357
|
export let range = (n, m, m2) => {
|
|
358
|
-
var result = new
|
|
358
|
+
var result = new CalcitSliceList([]);
|
|
359
359
|
if (m2 != null) {
|
|
360
360
|
console.warn("TODO range with 3 arguments"); // TODO
|
|
361
361
|
}
|
|
@@ -376,17 +376,17 @@ export let range = (n, m, m2) => {
|
|
|
376
376
|
return result;
|
|
377
377
|
};
|
|
378
378
|
export function _$n_list_$o_empty_$q_(xs) {
|
|
379
|
-
if (xs instanceof CalcitList)
|
|
379
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList)
|
|
380
380
|
return xs.isEmpty();
|
|
381
381
|
throw new Error(`expected a list ${xs}`);
|
|
382
382
|
}
|
|
383
383
|
export function _$n_str_$o_empty_$q_(xs) {
|
|
384
|
-
if (typeof xs
|
|
385
|
-
return xs.length
|
|
384
|
+
if (typeof xs === "string")
|
|
385
|
+
return xs.length === 0;
|
|
386
386
|
throw new Error(`expected a string ${xs}`);
|
|
387
387
|
}
|
|
388
388
|
export function _$n_map_$o_empty_$q_(xs) {
|
|
389
|
-
if (xs instanceof CalcitMap)
|
|
389
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
|
|
390
390
|
return xs.isEmpty();
|
|
391
391
|
throw new Error(`expected a list ${xs}`);
|
|
392
392
|
}
|
|
@@ -396,7 +396,7 @@ export function _$n_set_$o_empty_$q_(xs) {
|
|
|
396
396
|
throw new Error(`expected a list ${xs}`);
|
|
397
397
|
}
|
|
398
398
|
export let _$n_list_$o_first = (xs) => {
|
|
399
|
-
if (xs instanceof CalcitList) {
|
|
399
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
400
400
|
if (xs.isEmpty()) {
|
|
401
401
|
return null;
|
|
402
402
|
}
|
|
@@ -413,11 +413,11 @@ export let _$n_str_$o_first = (xs) => {
|
|
|
413
413
|
throw new Error("Expected a string");
|
|
414
414
|
};
|
|
415
415
|
export let _$n_map_$o_first = (xs) => {
|
|
416
|
-
if (xs instanceof CalcitMap) {
|
|
416
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap) {
|
|
417
417
|
// TODO order may not be stable enough
|
|
418
418
|
let ys = xs.pairs();
|
|
419
419
|
if (ys.length > 0) {
|
|
420
|
-
return new
|
|
420
|
+
return new CalcitSliceList(ys[0]);
|
|
421
421
|
}
|
|
422
422
|
else {
|
|
423
423
|
return null;
|
|
@@ -444,7 +444,7 @@ export let timeout_call = (duration, f) => {
|
|
|
444
444
|
return null;
|
|
445
445
|
};
|
|
446
446
|
export let _$n_list_$o_rest = (xs) => {
|
|
447
|
-
if (xs instanceof CalcitList) {
|
|
447
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
448
448
|
if (xs.len() === 0) {
|
|
449
449
|
return null;
|
|
450
450
|
}
|
|
@@ -466,13 +466,13 @@ export let _$n_set_$o_rest = (xs) => {
|
|
|
466
466
|
throw new Error("Expect a set");
|
|
467
467
|
};
|
|
468
468
|
export let _$n_map_$o_rest = (xs) => {
|
|
469
|
-
if (xs instanceof CalcitMap) {
|
|
469
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap) {
|
|
470
470
|
if (xs.len() > 0) {
|
|
471
471
|
let k0 = xs.pairs()[0][0];
|
|
472
472
|
return xs.dissoc(k0);
|
|
473
473
|
}
|
|
474
474
|
else {
|
|
475
|
-
return new
|
|
475
|
+
return new CalcitSliceMap([]);
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
478
|
console.error(xs);
|
|
@@ -488,19 +488,19 @@ export let not = (x) => {
|
|
|
488
488
|
return !x;
|
|
489
489
|
};
|
|
490
490
|
export let prepend = (xs, v) => {
|
|
491
|
-
if (!(xs instanceof CalcitList)) {
|
|
491
|
+
if (!(xs instanceof CalcitList || xs instanceof CalcitSliceList)) {
|
|
492
492
|
throw new Error("Expected array");
|
|
493
493
|
}
|
|
494
494
|
return xs.prepend(v);
|
|
495
495
|
};
|
|
496
496
|
export let append = (xs, v) => {
|
|
497
|
-
if (!(xs instanceof CalcitList)) {
|
|
497
|
+
if (!(xs instanceof CalcitList || xs instanceof CalcitSliceList)) {
|
|
498
498
|
throw new Error("Expected array");
|
|
499
499
|
}
|
|
500
500
|
return xs.append(v);
|
|
501
501
|
};
|
|
502
502
|
export let last = (xs) => {
|
|
503
|
-
if (xs instanceof CalcitList) {
|
|
503
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
504
504
|
if (xs.isEmpty()) {
|
|
505
505
|
return null;
|
|
506
506
|
}
|
|
@@ -513,7 +513,7 @@ export let last = (xs) => {
|
|
|
513
513
|
throw new Error("Data not ready for last");
|
|
514
514
|
};
|
|
515
515
|
export let butlast = (xs) => {
|
|
516
|
-
if (xs instanceof CalcitList) {
|
|
516
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
517
517
|
if (xs.len() === 0) {
|
|
518
518
|
return null;
|
|
519
519
|
}
|
|
@@ -555,7 +555,7 @@ export let _$n_list_$o_slice = (xs, from, to) => {
|
|
|
555
555
|
to = size;
|
|
556
556
|
}
|
|
557
557
|
else if (to <= from) {
|
|
558
|
-
return new
|
|
558
|
+
return new CalcitSliceList([]);
|
|
559
559
|
}
|
|
560
560
|
else if (to > size) {
|
|
561
561
|
to = size;
|
|
@@ -563,12 +563,12 @@ export let _$n_list_$o_slice = (xs, from, to) => {
|
|
|
563
563
|
return xs.slice(from, to);
|
|
564
564
|
};
|
|
565
565
|
export let _$n_list_$o_concat = (...lists) => {
|
|
566
|
-
let result = new
|
|
566
|
+
let result = new CalcitSliceList([]);
|
|
567
567
|
for (let item of lists) {
|
|
568
568
|
if (item == null) {
|
|
569
569
|
continue;
|
|
570
570
|
}
|
|
571
|
-
if (item instanceof CalcitList) {
|
|
571
|
+
if (item instanceof CalcitList || item instanceof CalcitSliceList) {
|
|
572
572
|
if (result.isEmpty()) {
|
|
573
573
|
result = item;
|
|
574
574
|
}
|
|
@@ -608,7 +608,7 @@ export let _$n_number_$o_rem = (a, b) => {
|
|
|
608
608
|
return a % b;
|
|
609
609
|
};
|
|
610
610
|
export let round_$q_ = (a) => {
|
|
611
|
-
return a
|
|
611
|
+
return a === Math.round(a);
|
|
612
612
|
};
|
|
613
613
|
export let _$n_str_$o_concat = (a, b) => {
|
|
614
614
|
let buffer = "";
|
|
@@ -624,9 +624,9 @@ export let sort = (xs, f) => {
|
|
|
624
624
|
if (xs == null) {
|
|
625
625
|
return null;
|
|
626
626
|
}
|
|
627
|
-
if (xs instanceof CalcitList) {
|
|
627
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
628
628
|
let ys = xs.toArray();
|
|
629
|
-
return new
|
|
629
|
+
return new CalcitSliceList(ys.sort(f));
|
|
630
630
|
}
|
|
631
631
|
throw new Error("Expected list");
|
|
632
632
|
};
|
|
@@ -640,8 +640,8 @@ export let _$n_merge = (a, b) => {
|
|
|
640
640
|
if (b == null) {
|
|
641
641
|
return a;
|
|
642
642
|
}
|
|
643
|
-
if (a instanceof CalcitMap) {
|
|
644
|
-
if (b instanceof CalcitMap) {
|
|
643
|
+
if (a instanceof CalcitMap || a instanceof CalcitSliceMap) {
|
|
644
|
+
if (b instanceof CalcitMap || b instanceof CalcitSliceMap) {
|
|
645
645
|
return a.merge(b);
|
|
646
646
|
}
|
|
647
647
|
else {
|
|
@@ -649,7 +649,7 @@ export let _$n_merge = (a, b) => {
|
|
|
649
649
|
}
|
|
650
650
|
}
|
|
651
651
|
if (a instanceof CalcitRecord) {
|
|
652
|
-
if (b instanceof CalcitMap) {
|
|
652
|
+
if (b instanceof CalcitMap || b instanceof CalcitSliceMap) {
|
|
653
653
|
let values = [];
|
|
654
654
|
for (let item of a.values) {
|
|
655
655
|
values.push(item);
|
|
@@ -682,26 +682,26 @@ export let _$n_merge_non_nil = (a, b) => {
|
|
|
682
682
|
if (b == null) {
|
|
683
683
|
return a;
|
|
684
684
|
}
|
|
685
|
-
if (!(a instanceof CalcitMap)) {
|
|
685
|
+
if (!(a instanceof CalcitMap || a instanceof CalcitSliceMap)) {
|
|
686
686
|
throw new Error("Expected map");
|
|
687
687
|
}
|
|
688
|
-
if (!(b instanceof CalcitMap)) {
|
|
688
|
+
if (!(b instanceof CalcitMap || b instanceof CalcitSliceMap)) {
|
|
689
689
|
throw new Error("Expected map");
|
|
690
690
|
}
|
|
691
691
|
return a.mergeSkip(b, null);
|
|
692
692
|
};
|
|
693
693
|
export let to_pairs = (xs) => {
|
|
694
|
-
if (xs instanceof CalcitMap) {
|
|
694
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap) {
|
|
695
695
|
let result = [];
|
|
696
696
|
for (let [k, v] of xs.pairs()) {
|
|
697
|
-
result.push(new
|
|
697
|
+
result.push(new CalcitSliceList([k, v]));
|
|
698
698
|
}
|
|
699
699
|
return new CalcitSet(result);
|
|
700
700
|
}
|
|
701
701
|
else if (xs instanceof CalcitRecord) {
|
|
702
702
|
let arr_result = [];
|
|
703
703
|
for (let idx = 0; idx < xs.fields.length; idx++) {
|
|
704
|
-
arr_result.push(new
|
|
704
|
+
arr_result.push(new CalcitSliceList([xs.fields[idx], xs.values[idx]]));
|
|
705
705
|
}
|
|
706
706
|
return new CalcitSet(arr_result);
|
|
707
707
|
}
|
|
@@ -785,10 +785,10 @@ export let _$n_str_$o_replace = (x, y, z) => {
|
|
|
785
785
|
return result;
|
|
786
786
|
};
|
|
787
787
|
export let split = (xs, x) => {
|
|
788
|
-
return new
|
|
788
|
+
return new CalcitSliceList(xs.split(x));
|
|
789
789
|
};
|
|
790
790
|
export let split_lines = (xs) => {
|
|
791
|
-
return new
|
|
791
|
+
return new CalcitSliceList(xs.split("\n"));
|
|
792
792
|
};
|
|
793
793
|
export let _$n_str_$o_slice = (xs, m, n) => {
|
|
794
794
|
if (n <= m) {
|
|
@@ -811,13 +811,13 @@ export let trim = (x, c) => {
|
|
|
811
811
|
var buffer = x;
|
|
812
812
|
var size = buffer.length;
|
|
813
813
|
var idx = 0;
|
|
814
|
-
while (idx < size && buffer[idx]
|
|
814
|
+
while (idx < size && buffer[idx] === c) {
|
|
815
815
|
idx = idx + 1;
|
|
816
816
|
}
|
|
817
817
|
buffer = buffer.substring(idx);
|
|
818
818
|
var size = buffer.length;
|
|
819
819
|
var idx = size;
|
|
820
|
-
while (idx > 1 && buffer[idx - 1]
|
|
820
|
+
while (idx > 1 && buffer[idx - 1] === c) {
|
|
821
821
|
idx = idx - 1;
|
|
822
822
|
}
|
|
823
823
|
buffer = buffer.substring(0, idx);
|
|
@@ -840,7 +840,7 @@ export let char_from_code = (n) => {
|
|
|
840
840
|
return String.fromCharCode(n);
|
|
841
841
|
};
|
|
842
842
|
export let _$n_set_$o_to_list = (x) => {
|
|
843
|
-
return new
|
|
843
|
+
return new CalcitSliceList(x.values());
|
|
844
844
|
};
|
|
845
845
|
export let aget = (x, name) => {
|
|
846
846
|
return x[name];
|
|
@@ -964,13 +964,13 @@ export let _$n_str_$o_compare = (x, y) => {
|
|
|
964
964
|
return 0;
|
|
965
965
|
};
|
|
966
966
|
export let arrayToList = (xs) => {
|
|
967
|
-
return new
|
|
967
|
+
return new CalcitSliceList(xs !== null && xs !== void 0 ? xs : []);
|
|
968
968
|
};
|
|
969
969
|
export let listToArray = (xs) => {
|
|
970
970
|
if (xs == null) {
|
|
971
971
|
return null;
|
|
972
972
|
}
|
|
973
|
-
if (xs instanceof CalcitList) {
|
|
973
|
+
if (xs instanceof CalcitList || xs instanceof CalcitSliceList) {
|
|
974
974
|
return xs.toArray();
|
|
975
975
|
}
|
|
976
976
|
else {
|
|
@@ -993,10 +993,10 @@ export let keyword_$q_ = (x) => {
|
|
|
993
993
|
return x instanceof CalcitKeyword;
|
|
994
994
|
};
|
|
995
995
|
export let map_$q_ = (x) => {
|
|
996
|
-
return x instanceof CalcitMap;
|
|
996
|
+
return x instanceof CalcitSliceMap || x instanceof CalcitMap;
|
|
997
997
|
};
|
|
998
998
|
export let list_$q_ = (x) => {
|
|
999
|
-
return x instanceof CalcitList;
|
|
999
|
+
return x instanceof CalcitSliceList || x instanceof CalcitList;
|
|
1000
1000
|
};
|
|
1001
1001
|
export let set_$q_ = (x) => {
|
|
1002
1002
|
return x instanceof CalcitSet;
|
|
@@ -1052,7 +1052,7 @@ export let format_to_lisp = (x) => {
|
|
|
1052
1052
|
else if (x instanceof CalcitSymbol) {
|
|
1053
1053
|
return x.value;
|
|
1054
1054
|
}
|
|
1055
|
-
else if (x instanceof CalcitList) {
|
|
1055
|
+
else if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
1056
1056
|
let chunk = "(";
|
|
1057
1057
|
for (let item of x.items()) {
|
|
1058
1058
|
if (chunk != "(") {
|
|
@@ -1082,7 +1082,7 @@ export let transform_code_to_cirru = (x) => {
|
|
|
1082
1082
|
else if (x instanceof CalcitSymbol) {
|
|
1083
1083
|
return x.value;
|
|
1084
1084
|
}
|
|
1085
|
-
else if (x instanceof CalcitList) {
|
|
1085
|
+
else if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
1086
1086
|
let xs = [];
|
|
1087
1087
|
for (let item of x.items()) {
|
|
1088
1088
|
xs.push(transform_code_to_cirru(item));
|
|
@@ -1166,13 +1166,13 @@ export function invoke_method(p) {
|
|
|
1166
1166
|
else if (obj instanceof CalcitSet) {
|
|
1167
1167
|
klass = calcit_builtin_classes.set;
|
|
1168
1168
|
}
|
|
1169
|
-
else if (obj instanceof CalcitList) {
|
|
1169
|
+
else if (obj instanceof CalcitList || obj instanceof CalcitSliceList) {
|
|
1170
1170
|
klass = calcit_builtin_classes.list;
|
|
1171
1171
|
}
|
|
1172
1172
|
else if (obj instanceof CalcitRecord) {
|
|
1173
1173
|
klass = calcit_builtin_classes.record;
|
|
1174
1174
|
}
|
|
1175
|
-
else if (obj instanceof CalcitMap) {
|
|
1175
|
+
else if (obj instanceof CalcitMap || obj instanceof CalcitSliceMap) {
|
|
1176
1176
|
klass = calcit_builtin_classes.map;
|
|
1177
1177
|
}
|
|
1178
1178
|
else {
|
|
@@ -1195,12 +1195,12 @@ export function invoke_method(p) {
|
|
|
1195
1195
|
};
|
|
1196
1196
|
}
|
|
1197
1197
|
export let _$n_map_$o_to_list = (m) => {
|
|
1198
|
-
if (m instanceof CalcitMap) {
|
|
1198
|
+
if (m instanceof CalcitMap || m instanceof CalcitSliceMap) {
|
|
1199
1199
|
let ys = [];
|
|
1200
1200
|
for (let pair of m.pairs()) {
|
|
1201
|
-
ys.push(new
|
|
1201
|
+
ys.push(new CalcitSliceList(pair));
|
|
1202
1202
|
}
|
|
1203
|
-
return new
|
|
1203
|
+
return new CalcitSliceList(ys);
|
|
1204
1204
|
}
|
|
1205
1205
|
else {
|
|
1206
1206
|
throw new Error("&map:to-list expected a Map");
|
|
@@ -1244,11 +1244,11 @@ let typeAsInt = (x) => {
|
|
|
1244
1244
|
return PseudoTypeIndex.tuple;
|
|
1245
1245
|
if (x instanceof CalcitRecur)
|
|
1246
1246
|
return PseudoTypeIndex.recur;
|
|
1247
|
-
if (x instanceof CalcitList)
|
|
1247
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList)
|
|
1248
1248
|
return PseudoTypeIndex.list;
|
|
1249
1249
|
if (x instanceof CalcitSet)
|
|
1250
1250
|
return PseudoTypeIndex.set;
|
|
1251
|
-
if (x instanceof CalcitMap)
|
|
1251
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap)
|
|
1252
1252
|
return PseudoTypeIndex.map;
|
|
1253
1253
|
if (x instanceof CalcitRecord)
|
|
1254
1254
|
return PseudoTypeIndex.record;
|
|
@@ -1307,7 +1307,7 @@ export let _$n_compare = (a, b) => {
|
|
|
1307
1307
|
}
|
|
1308
1308
|
};
|
|
1309
1309
|
export let _$n_map_$o_diff_new = (a, b) => {
|
|
1310
|
-
if (a instanceof CalcitMap && b instanceof CalcitMap) {
|
|
1310
|
+
if ((a instanceof CalcitMap || a instanceof CalcitSliceMap) && (b instanceof CalcitMap || b instanceof CalcitSliceMap)) {
|
|
1311
1311
|
return a.diffNew(b);
|
|
1312
1312
|
}
|
|
1313
1313
|
else {
|
|
@@ -1315,7 +1315,7 @@ export let _$n_map_$o_diff_new = (a, b) => {
|
|
|
1315
1315
|
}
|
|
1316
1316
|
};
|
|
1317
1317
|
export let _$n_map_$o_diff_keys = (a, b) => {
|
|
1318
|
-
if (a instanceof CalcitMap && b instanceof CalcitMap) {
|
|
1318
|
+
if ((a instanceof CalcitMap || a instanceof CalcitSliceMap) && (b instanceof CalcitMap || b instanceof CalcitSliceMap)) {
|
|
1319
1319
|
return a.diffKeys(b);
|
|
1320
1320
|
}
|
|
1321
1321
|
else {
|
|
@@ -1323,7 +1323,7 @@ export let _$n_map_$o_diff_keys = (a, b) => {
|
|
|
1323
1323
|
}
|
|
1324
1324
|
};
|
|
1325
1325
|
export let _$n_map_$o_common_keys = (a, b) => {
|
|
1326
|
-
if (a instanceof CalcitMap && b instanceof CalcitMap) {
|
|
1326
|
+
if ((a instanceof CalcitMap || a instanceof CalcitSliceMap) && (b instanceof CalcitMap || b instanceof CalcitSliceMap)) {
|
|
1327
1327
|
return a.commonKeys(b);
|
|
1328
1328
|
}
|
|
1329
1329
|
else {
|
|
@@ -1355,7 +1355,7 @@ export let _$n_list_$o_distinct = (xs) => {
|
|
|
1355
1355
|
}
|
|
1356
1356
|
result.push(data[idx]);
|
|
1357
1357
|
}
|
|
1358
|
-
return new
|
|
1358
|
+
return new CalcitSliceList(result);
|
|
1359
1359
|
};
|
|
1360
1360
|
export let _$n_get_os = () => {
|
|
1361
1361
|
return kwd("js-engine");
|