aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-12 13:30:44 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-12 13:30:44 -0400
commite32dd8cf8b22f7d1f7a21d261a01d65e9e9d02f6 (patch)
tree4281b1606cfaba1318ba91acb5666078cdbe0999
parent1ee87751aaecf7b3eba3403e1fd6d847076761f8 (diff)
Compute •listSys dynamically
-rwxr-xr-xdocs/bqn.js11
1 files changed, 5 insertions, 6 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index d16813be..896a39a5 100755
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -267,14 +267,12 @@ let compile = run(
);
runtime[42] = rtAssert;
let system = (x,w) => {
- let sv = sysvals;
- if (!sv.listsys) { sv.listsys = list(Object.keys(sv).map(str).sort()); }
- let r = table(s=>sv[s.join("")])(x);
+ let r = table(s=>sysvals[s.join("")])(x);
if (r.some(v=>!has(v))) {
let m = x.filter((_,i)=>!has(r[i])).map(s=>"•"+s.join("")).join(" ");
throw Error("Unknown system values (see •listSys for available): "+m);
}
- return r;
+ return table(v=>v.dynamic?v():v)(r);
}
let rt_sys = list([runtime, system]);
let bqn = src => run.apply(null,compile(str(src),rt_sys));
@@ -326,9 +324,10 @@ let dojs = (x,w) => {
return toBQN(r);
}
let sysvals = {
- bqn, js:dojs, type, glyph, decompose, fmt:fmt1, listsys:0,
- unixtime
+ bqn, js:dojs, type, glyph, decompose, fmt:fmt1, unixtime,
+ listsys: () => list(Object.keys(sysvals).map(str).sort())
};
+sysvals.listsys.dynamic = 1;
let make_timed = tfn => {
let timed = f => (x,w) => {