diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-12 13:30:44 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-12 13:30:44 -0400 |
| commit | e32dd8cf8b22f7d1f7a21d261a01d65e9e9d02f6 (patch) | |
| tree | 4281b1606cfaba1318ba91acb5666078cdbe0999 | |
| parent | 1ee87751aaecf7b3eba3403e1fd6d847076761f8 (diff) | |
Compute •listSys dynamically
| -rwxr-xr-x | docs/bqn.js | 11 |
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) => { |
