Really-amin's picture
Upload 1460 files
96af7c9 verified
raw
history blame
818 Bytes
import { LazyArbitrary } from './_internals/LazyArbitrary.js';
import { safeHasOwnProperty } from '../utils/globals.js';
const safeObjectCreate = Object.create;
export function letrec(builder) {
const lazyArbs = safeObjectCreate(null);
const tie = (key) => {
if (!safeHasOwnProperty(lazyArbs, key)) {
lazyArbs[key] = new LazyArbitrary(String(key));
}
return lazyArbs[key];
};
const strictArbs = builder(tie);
for (const key in strictArbs) {
if (!safeHasOwnProperty(strictArbs, key)) {
continue;
}
const lazyAtKey = lazyArbs[key];
const lazyArb = lazyAtKey !== undefined ? lazyAtKey : new LazyArbitrary(key);
lazyArb.underlying = strictArbs[key];
lazyArbs[key] = lazyArb;
}
return strictArbs;
}