From e32dd8cf8b22f7d1f7a21d261a01d65e9e9d02f6 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 12 Apr 2021 13:30:44 -0400 Subject: =?UTF-8?q?Compute=20=E2=80=A2listSys=20dynamically?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/bqn.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'docs') 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) => { -- cgit v1.2.3