aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-08-27 08:35:22 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-08-27 09:48:43 -0400
commit2b68dc13845fd7e499c99e79dae56421f5ef611f (patch)
tree6c0950edfed4605a70e8d903acac50a177f3592b
parent274ab64859f47f30dd0e5f79c35d4b483cc7ba5a (diff)
Fix Node REPL
-rwxr-xr-xbqn.js6
-rw-r--r--docs/bqn.js17
2 files changed, 11 insertions, 12 deletions
diff --git a/bqn.js b/bqn.js
index 3ec00774..74744bf3 100755
--- a/bqn.js
+++ b/bqn.js
@@ -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)