| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.letrec = letrec; |
| const LazyArbitrary_1 = require("./_internals/LazyArbitrary"); |
| const globals_1 = require("../utils/globals"); |
| const safeObjectCreate = Object.create; |
| function letrec(builder) { |
| const lazyArbs = safeObjectCreate(null); |
| const tie = (key) => { |
| if (!(0, globals_1.safeHasOwnProperty)(lazyArbs, key)) { |
| lazyArbs[key] = new LazyArbitrary_1.LazyArbitrary(String(key)); |
| } |
| return lazyArbs[key]; |
| }; |
| const strictArbs = builder(tie); |
| for (const key in strictArbs) { |
| if (!(0, globals_1.safeHasOwnProperty)(strictArbs, key)) { |
| continue; |
| } |
| const lazyAtKey = lazyArbs[key]; |
| const lazyArb = lazyAtKey !== undefined ? lazyAtKey : new LazyArbitrary_1.LazyArbitrary(key); |
| lazyArb.underlying = strictArbs[key]; |
| lazyArbs[key] = lazyArb; |
| } |
| return strictArbs; |
| } |
|
|