diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-15 22:14:56 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-04-15 22:14:56 -0400 |
| commit | 9f437d3468c9078c46d30da68ac3821cacb045e5 (patch) | |
| tree | ffce69ded67272d874a21f14360e88a7da53e0c0 | |
| parent | bbe589b136df82a3e0a6e0801b33218c49105fb6 (diff) | |
Monadic •Import: use ⟨⟩ for •args and cache result
| -rwxr-xr-x | bqn.js | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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) { |
