aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-15 22:14:56 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-15 22:14:56 -0400
commit9f437d3468c9078c46d30da68ac3821cacb045e5 (patch)
treeffce69ded67272d874a21f14360e88a7da53e0c0
parentbbe589b136df82a3e0a6e0801b33218c49105fb6 (diff)
Monadic •Import: use ⟨⟩ for •args and cache result
-rwxr-xr-xbqn.js9
1 files changed, 8 insertions, 1 deletions
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) {