@typed/fp
Version:
Data Structures and Resources for fp-ts
35 lines • 885 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MonadRec = exports.ChainRec = exports.chainRec = void 0;
const tslib_1 = require("tslib");
const E = (0, tslib_1.__importStar)(require("fp-ts/Either"));
const S = (0, tslib_1.__importStar)(require("fp-ts/State"));
/**
* @since 0.9.2
* @category Combinator
*/
const chainRec = (f) => (value) => (s) => {
let result = f(value)(s);
while (E.isLeft(result[0])) {
result = f(value)(result[1]);
}
return [result[0].right, result[1]];
};
exports.chainRec = chainRec;
/**
* @since 0.9.2
* @category Instance
*/
exports.ChainRec = {
chainRec: exports.chainRec,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.MonadRec = {
...S.Monad,
chainRec: exports.chainRec,
};
(0, tslib_1.__exportStar)(require("fp-ts/State"), exports);
//# sourceMappingURL=State.js.map