diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-30 15:11:25 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-30 15:11:25 -0400 |
| commit | 2187c15b54f8b2803586e0abdb7c7bc94daa83eb (patch) | |
| tree | 4e7f691f6dd3762dd399ed729ba28efe86a56394 /docs/bqn.js | |
| parent | 3761d5a57ab3c9ee6db96a4e1381048f1060a71c (diff) | |
Add push_state so •state changes don't affect parent program
Diffstat (limited to 'docs/bqn.js')
| -rw-r--r-- | docs/bqn.js | 7 |
1 files changed, 5 insertions, 2 deletions
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; } |
