From 2187c15b54f8b2803586e0abdb7c7bc94daa83eb Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 30 Aug 2021 15:11:25 -0400 Subject: =?UTF-8?q?Add=20push=5Fstate=20so=20=E2=80=A2state=20changes=20do?= =?UTF-8?q?n't=20affect=20parent=20program?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/bqn.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/bqn.js b/docs/bqn.js index 6b2e7c2d..b2ce92be 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -489,12 +489,15 @@ let dojs = (x,w) => { } let update_state = (st,w)=>w; // Modified by Node version to handle •state +let push_state = st => st; +let copy_state = st_old => { + let st={...st_old}; st.addrt=[]; push_state(st); return st; +} let makebqn = (proc,fn) => st => (x,w) => { let src = proc(x,w,update_state,st); return fn(st.comps(st)(src)); } let makebqnfn = (e,fn) => makebqn((x,w,u,s)=>req1str(e,x,u(s,w)), fn); -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) => { @@ -583,6 +586,6 @@ if (typeof module!=='undefined') { // Node.js bqn.makebqn=fn=>makebqn(fn,r=>run(...r)); bqn.makerepl=(st,repl)=>rerepl(repl, makebqn(x=>x,r=>r)(st), st); bqn.util={has,list,str,unstr,dynsys,req1str,makens}; - bqn.setexec = f => { update_state=f; } + bqn.setexec = (u,p) => { update_state=u; push_state=p; } module.exports=bqn; } -- cgit v1.2.3