From 9f437d3468c9078c46d30da68ac3821cacb045e5 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Thu, 15 Apr 2021 22:14:56 -0400 Subject: =?UTF-8?q?Monadic=20=E2=80=A2Import:=20use=20=E2=9F=A8=E2=9F=A9?= =?UTF-8?q?=20for=20=E2=80=A2args=20and=20cache=20result?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bqn.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bqn.js b/bqn.js index f3c2ade6..52017727 100755 --- a/bqn.js +++ b/bqn.js @@ -35,9 +35,16 @@ sysvals.bqn = (x,w) => bqn_state(req1str("•BQN",x), w); let bqn_file = (f,t,w) => bqn_state( t, [ str(path.resolve(f,'..')+'/'), str(path.basename(f)), w ] ); +let imports = {}; sysvals.import = withres("•Import", resolve => (x,w) => { let f = resolve(req1str("•Import",x)); - return bqn_file(f, fs.readFileSync(f,'utf-8'), w); + let save = r=>r; + if (!has(w)) { + let c=imports[f]; if (has(c)) return c; + save = r => (imports[f]=r); + w=list([]); + } + return save(bqn_file(f, fs.readFileSync(f,'utf-8'), w)); }); if (!module.parent) { -- cgit v1.2.3