diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-01-06 21:48:59 -0500 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-01-06 21:48:59 -0500 |
| commit | ada4aa0b7b2897efef1f0e506bf9f11826728435 (patch) | |
| tree | 9fc6c0bcdbffd17d8ca319ca49e7d57924605426 | |
| parent | ad9335c0d1c0c3ec50ec92431f865f1b78666e17 (diff) | |
Move •ListKeys to •ns.Keys
| -rw-r--r-- | docs/bqn.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/docs/bqn.js b/docs/bqn.js index 6ccff13e..fd8b8301 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -35,9 +35,9 @@ let makens = (keys, vals) => { n.names=keys.map(k=>k.toLowerCase()); vals.ns=n; return vals; } let obj2ns = (obj, keys, f) => makens(keys, keys.map(k=>(f?f:(v=>v))(obj[k]))); -let listkeys = (x,w) => { +let listkeys = x => { let s=x.ns, k=Object.keys(s).filter(n=>!isNaN(n)); - return list(k.map(n=>s.names[+n]).sort().map(str)); + return k.map(n=>s.names[+n]).sort(); } let getv= (a,i) => { let v=a[i]; if (v===null) throw Error("Runtime: Variable referenced before definition"); return v; } @@ -467,7 +467,7 @@ runtime[43] = rtAssert; let fmtnum = x => str(x==Infinity ? "∞" : x==-Infinity ? "¯∞" : (""+x).replace(/-/g,"¯").replace(/\+/g,"")); let placeholder = ["array","function","1-modifier","2-modifier"].map(s => str("*"+s+"*")); -let repop = x => x.ns ? str("{"+listkeys(x).map(s=>s.join("")).join("‿")+"⇐}") +let repop = x => x.ns ? str("{"+listkeys(x).join("‿")+"⇐}") : gl[x.prim] || placeholder[type(x)-2]; let [fmt1,repr] = run( [1,1,7,34,0,1,33,0,3,33,0,4,33,0,5,33,0,6,12,4,48,6,0,68,0,15,0,18,0,18,21,0,41,0,69,27,11,2,0,44,0,10,0,41,0,59,27,27,32,0,6,11,2,0,44,0,59,0,42,0,8,27,27,33,0,7,48,6,1,2,33,0,8,48,6,0,11,0,8,0,51,21,0,46,1,3,27,33,0,9,48,6,1,4,33,0,10,48,6,1,5,33,0,11,48,6,1,6,1,7,11,2,0,44,1,8,0,50,11,2,0,44,0,10,0,42,0,10,0,41,0,50,27,0,40,0,7,27,27,27,27,33,0,12,48,6,0,78,0,19,0,77,17,1,9,1,10,11,2,0,44,0,10,0,11,0,47,21,0,7,0,11,0,10,0,51,21,21,27,11,2,0,44,0,14,0,14,0,47,0,47,11,2,21,27,33,0,13,48,6,1,11,33,0,14,48,6,1,12,33,0,15,48,6,1,13,1,14,1,15,11,3,0,44,0,31,0,59,26,0,8,0,17,21,0,39,0,36,0,0,26,0,12,0,0,0,8,0,41,0,47,27,21,0,10,21,27,27,33,0,16,48,6,32,0,7,0,19,20,34,0,16,32,0,15,11,2,0,44,0,35,32,0,3,26,0,12,0,56,21,0,17,0,39,0,36,0,7,26,27,20,27,32,0,15,11,3,0,44,0,13,0,3,0,51,21,27,33,0,17,48,6,1,16,33,0,18,48,6,0,86,33,0,19,48,6,0,16,0,39,0,29,27,32,0,5,20,32,0,19,11,2,0,44,0,51,0,42,0,11,27,27,32,0,18,32,0,17,0,39,34,0,19,0,28,11,2,0,44,0,10,0,11,0,50,21,27,27,27,0,29,0,50,21,0,19,20,33,0,20,48,6,0,16,0,16,34,0,17,20,34,0,20,11,2,0,44,0,15,0,12,0,56,21,27,32,0,3,21,33,0,21,48,6,1,17,33,0,22,48,6,0,70,0,16,0,15,0,18,0,16,0,27,0,11,0,0,0,50,21,21,21,0,18,0,15,21,0,67,21,0,34,32,0,7,0,18,0,79,21,26,0,18,0,24,0,72,21,0,18,0,71,21,0,18,0,22,0,50,21,11,2,0,44,0,10,0,8,0,50,21,27,20,0,34,32,0,22,0,18,0,87,21,26,0,18,20,0,24,0,72,21,0,18,0,71,21,11,3,0,44,0,35,32,0,3,26,0,32,0,28,26,0,51,0,17,0,57,17,0,25,0,51,0,50,0,47,11,3,17,21,0,36,0,4,26,20,27,11,2,0,44,0,10,0,8,0,47,21,27,33,0,23,48,6,0,29,0,39,32,0,22,27,0,18,0,88,21,32,0,23,0,17,34,0,23,0,40,0,18,0,41,0,89,0,42,0,18,27,27,27,0,14,21,11,3,0,44,0,11,0,3,0,51,21,27,33,0,24,48,6,34,0,7,34,0,24,11,2,0,44,32,0,3,0,11,0,47,21,27,33,0,25,48,6,0,31,0,47,26,0,30,0,90,21,34,0,18,34,0,22,27,0,29,0,50,21,33,0,26,48,6,0,16,0,16,34,0,25,20,34,0,26,11,2,0,44,0,15,0,12,0,56,21,27,32,0,3,21,33,0,27,48,6,32,0,21,0,39,0,33,0,58,0,0,0,59,17,0,42,0,18,27,26,27,0,17,20,0,22,0,48,21,32,0,27,11,2,7,0,50,0,34,0,21,26,34,0,1,0,1,16,17,0,26,0,43,0,38,0,32,0,35,0,2,26,26,26,27,16,0,36,0,48,0,49,11,2,0,45,0,0,27,26,34,0,2,19,0,17,16,0,29,0,41,0,48,27,0,43,0,47,27,16,7,32,0,1,0,14,16,0,22,0,48,17,33,0,3,48,0,4,0,50,17,32,1,8,16,33,0,4,48,6,1,18,33,0,5,48,6,32,0,1,0,17,34,0,1,0,14,16,0,21,0,48,17,0,18,34,0,3,0,36,0,2,26,16,17,17,0,21,0,41,0,36,0,0,26,27,34,0,5,11,2,0,44,0,16,0,39,0,10,27,0,8,0,47,21,27,34,0,4,17,7,32,0,1,0,17,16,0,34,0,31,0,60,26,0,17,0,14,0,29,0,48,21,0,42,0,19,27,21,0,18,0,16,21,26,34,0,1,0,14,16,32,1,8,0,50,17,17,0,18,16,7,0,60,0,17,32,0,1,0,10,16,34,0,2,11,2,17,33,0,3,48,6,32,0,3,34,0,1,34,0,3,11,3,0,19,16,0,18,16,7,0,72,0,18,34,0,1,0,28,16,0,22,0,50,17,0,22,0,48,17,17,0,18,0,71,17,0,19,16,7,32,0,1,0,14,16,0,29,0,48,17,33,0,3,48,6,0,73,32,0,2,0,16,0,3,0,50,21,0,32,0,28,26,0,74,21,0,17,20,32,1,6,11,2,0,44,0,8,0,41,0,52,27,27,16,11,2,0,18,16,0,21,32,0,3,17,0,19,16,34,0,1,0,29,0,43,0,75,0,29,0,50,0,1,34,0,2,17,0,3,0,53,17,0,4,0,47,17,17,27,16,0,76,0,21,0,41,0,1,27,34,0,3,17,0,19,16,11,3,0,18,16,7,34,0,1,0,28,16,0,35,0,11,26,0,70,17,0,37,0,1,26,16,0,38,0,0,26,16,0,11,0,51,17,0,36,0,7,26,16,7,34,0,1,0,34,0,60,26,16,32,1,11,0,50,17,32,1,12,0,51,17,0,29,0,41,0,47,0,48,11,2,27,0,43,0,61,27,16,7,34,0,1,0,14,16,0,70,0,34,32,1,6,26,0,34,0,18,0,41,0,79,27,26,20,0,18,20,0,29,0,43,0,62,27,20,11,2,0,44,0,10,0,8,0,50,21,27,16,0,19,16,7,32,0,1,0,34,0,14,26,16,33,0,3,48,6,32,0,3,0,34,0,29,26,0,50,17,0,17,0,31,0,50,26,0,1,0,11,21,0,46,0,37,0,4,26,27,11,2,0,44,0,11,0,8,0,47,21,27,16,33,0,4,48,6,34,0,3,0,34,0,29,26,16,0,11,0,8,0,47,21,0,46,0,50,0,45,0,37,0,4,26,27,27,16,33,0,5,48,6,34,0,1,0,34,0,21,26,0,50,0,21,32,0,4,0,10,16,0,2,32,0,2,19,0,1,16,17,0,6,34,0,4,17,0,2,34,0,2,19,0,35,0,19,26,32,0,5,17,17,0,11,0,1,0,51,21,0,4,0,47,21,0,46,0,19,27,16,0,51,0,45,0,18,0,39,0,8,27,27,16,33,0,6,48,6,34,0,6,32,1,10,0,9,0,39,32,1,9,27,11,2,0,44,34,0,5,0,17,16,0,13,0,41,0,26,0,41,0,50,27,27,16,27,16,32,1,11,0,51,17,7,32,0,1,0,34,32,1,21,26,16,32,1,14,0,50,0,15,34,0,2,19,17,32,1,12,34,0,1,0,11,16,17,7,32,0,1,0,11,16,33,0,3,48,6,0,80,0,16,0,43,32,0,1,27,16,0,22,0,47,17,33,0,1,49,6,32,0,1,0,14,16,0,22,0,48,17,33,0,4,48,0,10,16,0,1,16,0,11,0,41,0,47,27,0,46,0,49,27,16,33,0,5,48,6,32,0,3,0,8,0,47,17,0,32,0,29,26,0,81,17,33,0,6,48,6,1,19,33,0,7,48,6,32,0,1,0,27,0,41,0,16,0,11,32,0,6,21,0,0,0,50,21,27,34,0,7,11,2,0,44,32,0,3,0,10,0,50,17,27,16,33,0,1,49,6,32,0,6,0,21,0,41,0,1,27,32,0,4,17,32,0,5,0,45,0,18,27,34,0,1,17,34,0,5,0,45,0,18,27,0,65,0,21,32,0,4,0,18,0,50,17,0,29,0,48,17,17,0,17,34,0,4,17,0,29,0,43,34,0,6,27,16,17,0,19,16,32,0,3,0,10,0,50,17,0,46,32,1,9,32,1,11,0,50,21,32,1,12,34,0,3,21,27,16,7,34,0,1,32,1,15,32,1,13,11,2,0,44,0,14,0,11,0,47,21,0,36,0,7,26,20,27,16,7,34,0,1,32,1,15,0,48,17,7,0,16,0,16,34,0,4,20,0,20,0,47,21,34,0,0,11,2,0,44,0,15,0,12,0,56,21,27,32,1,3,21,33,0,6,48,6,32,0,1,32,1,4,16,33,0,7,48,0,29,16,33,0,8,48,6,0,66,0,1,0,82,17,0,29,32,0,8,17,33,0,9,48,6,0,84,0,42,0,18,27,0,18,0,83,21,33,0,10,48,6,0,16,0,34,34,0,6,0,42,0,29,0,41,0,50,27,0,15,0,12,32,0,9,0,3,0,51,17,21,0,46,0,16,0,39,34,0,10,27,27,0,29,0,42,0,0,27,21,27,26,0,10,0,39,0,23,27,0,11,0,47,21,0,1,20,0,50,0,9,32,0,9,17,0,46,0,26,27,20,21,0,18,20,33,0,11,48,6,32,0,7,0,22,0,50,17,0,31,34,0,1,26,32,1,5,0,39,0,17,27,20,0,16,34,0,5,34,0,2,23,34,0,11,11,3,0,44,34,0,8,0,5,16,0,3,0,51,17,27,16,33,0,12,48,6,32,0,12,32,0,9,0,12,0,51,17,0,46,0,31,34,0,7,26,0,29,0,48,21,32,1,3,20,0,9,0,56,21,0,46,0,85,0,42,0,18,27,27,27,16,33,0,12,49,6,34,0,9,34,0,12,11,2,7,34,0,1,32,1,27,16,7,34,0,1,0,18,0,41,0,28,0,39,0,34,0,60,26,27,27,16,0,28,34,0,2,0,0,0,50,19,0,18,0,47,19,0,27,18,0,2,0,41,0,8,0,41,0,25,27,27,18,19,7,0,55,0,0,0,59,17,0,8,32,0,1,17,0,2,0,59,0,1,0,64,17,17,0,0,0,54,0,0,0,59,17,0,16,0,1,0,63,21,0,2,0,11,21,32,0,1,17,17,0,0,34,0,1,17,7] @@ -588,6 +588,14 @@ let mathns = obj2ns(Math, ); trig.map((_,i)=>{let f=mathns[i],g=mathns[i+trig.length]; f.inverse=g; g.inverse=f;}); +let nsns = (() => { + let keys = (x,w) => { + if (has(w)||!x.ns) throw Error("•ns.Keys: Takes one namespace argument"); + return list(listkeys(x).map(str)); + } + return makens(["keys"], [keys]); +})(); + let rand = (() => { let reqnat = (e,x) => { if (!isnum(x) || x<0 || x!=Math.floor(x)) throw Error("•rand."+e+" must be a natural number"); @@ -629,8 +637,8 @@ let rand = (() => { let sysvals = { bqn:dynsys_copy(makebqnfn("•BQN",r=>run(...r))), rebqn, primitives, - type, glyph, decompose, fmt:fmt1, repr, unixtime, listkeys, - js:dojs, math:mathns, rand, + type, glyph, decompose, fmt:fmt1, repr, unixtime, + js:dojs, math:mathns, ns:nsns, rand, listsys: dynsys(_ => list(Object.keys(sysvals).sort().map(str))) }; |
