diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-27 08:35:22 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-27 09:48:43 -0400 |
| commit | 2b68dc13845fd7e499c99e79dae56421f5ef611f (patch) | |
| tree | 6c0950edfed4605a70e8d903acac50a177f3592b | |
| parent | 274ab64859f47f30dd0e5f79c35d4b483cc7ba5a (diff) | |
Fix Node REPL
| -rwxr-xr-x | bqn.js | 6 | ||||
| -rw-r--r-- | docs/bqn.js | 17 |
2 files changed, 11 insertions, 12 deletions
@@ -36,7 +36,7 @@ sysvals.fbytes = withres("•FBytes",fbytes); sysvals.file = dynsys(state => { let p = state.path; - let res = getres(p); + let res = state.resolve; let files = { // Paths and parsing path: p, @@ -151,8 +151,8 @@ if (!module.parent) { } } if (!has(arg0) || arg0==='-r') { - let st = cl_state(); - let stdin = process.stdin, repl = sysvals.makerepl(); + let stdin = process.stdin; + let repl = sysvals.rebqn(cl_state())(makens(["repl"],[str("loose")])); let e = exec(s=>show(repl(str(s)))); stdin.on('end', () => { process.exit(); }); stdin.on('readable', () => { diff --git a/docs/bqn.js b/docs/bqn.js index 4684f939..fff892d2 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -491,14 +491,14 @@ let dojs = (x,w) => { } let update_state = (st,w)=>w; // Modified by Node version to handle •state -let makebqn = (e,fn) => st_old => { - let st={...st_old}; st.addrt=[]; - return (x,w) => { - let src = req1str(e,x,update_state(st,w)); - return fn(st.comps(st)(src)); - } +let makebqn = (e,fn) => st => (x,w) => { + let src = req1str(e,x,update_state(st,w)); + return fn(st.comps(st)(src)); } -let rebqn = dynsys(state => (x,w) => { +let copy_state = st_old => { let st={...st_old}; st.addrt=[]; return st; } +let dynsys_copy = fn => dynsys(st => fn(copy_state(st))); + +let rebqn = dynsys_copy(state => (x,w) => { let req = (r,s) => { if (!r) throw Error("•ReBQN: "+s) }; req(!has(w), "𝕨 not allowed"); req(x.ns, "𝕩 must be a namespace"); @@ -517,7 +517,6 @@ let rebqn = dynsys(state => (x,w) => { let k=val.m||0; pr[k].push(gl); rt[k].push(val); }); - state = {...state}; state.glyphs = pr.map(str); state.runtime = list([].concat(...rt)); compgen(state); @@ -550,7 +549,7 @@ let primitives = dynsys(state => { }); let sysvals = { - bqn:dynsys(makebqn("•BQN",r=>run(...r))), rebqn, primitives, js:dojs, + bqn:dynsys_copy(makebqn("•BQN",r=>run(...r))), rebqn, primitives, js:dojs, type, glyph, decompose, fmt:fmt1, repr, unixtime, listkeys, listsys: dynsys(_ => list(Object.keys(sysvals).sort().map(str))), math: obj2ns(Math,("LN10 LN2 LOG10E LOG2E cbrt expm1 hypot log10 log1p log2 round trunc atan2 cos cosh sin sinh tan tanh").split(" "), f=>typeof f==="function"?runtime[60](f,0):f) |
