mkCtx6 = (parent, ...initDefs) => {
const defs = new Map(parent && parent.defs);
const cache = new Map();
const res = fun => {
if (!cache.has(fun)) {
let resFun = fun;
while (defs.has(resFun)) {
resFun = defs.get(resFun);
}
console.log(resFun);
cache.set(fun, resFun(res));
}
return cache.get(fun);
};
res.def = (fun1, fun2) => {
defs.set(fun1, fun2);
return res;
}
res.cache = cache;
res.defs = defs;
for (const def of (initDefs || [])) {
res.def(def[0], def[1]);
}
return res;
}