@typed/fp
Version:
Data Structures and Resources for fp-ts
97 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Provide = exports.ProvideAll = exports.ProvideSome = exports.UseAll = exports.UseSome = exports.provideAll = exports.useAll = exports.provideSome = exports.useSome = exports.MonadRec = exports.ChainRec = exports.chainRec = void 0;
const tslib_1 = require("tslib");
/**
* @typed/fp/Reader is an extension to fp-ts/Reader with ChainRec + MonadRec instances.
*
* @since 0.9.2
*/
const ChainRec_1 = require("fp-ts/ChainRec");
const R = (0, tslib_1.__importStar)(require("fp-ts/Reader"));
const function_1 = require("./function");
(0, tslib_1.__exportStar)(require("fp-ts/Reader"), exports);
/**
* @since 0.9.2
* @category Combinator
*/
const chainRec = (f) => (value) => (r) => (0, function_1.pipe)(value, (0, ChainRec_1.tailRec)((a) => f(a)(r)));
exports.chainRec = chainRec;
/**
* @since 0.9.2
* @category Instance
*/
exports.ChainRec = {
chainRec: exports.chainRec,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.MonadRec = {
...R.Monad,
chainRec: exports.chainRec,
};
/**
* @since 0.9.2
* @category Combinator
*/
const useSome = (provided) => (reader) => (e) => reader({ ...e, ...provided });
exports.useSome = useSome;
/**
* @since 0.9.2
* @category Combinator
*/
const provideSome = (provided) => (reader) => (e) => reader({ ...provided, ...e });
exports.provideSome = provideSome;
/**
* @since 0.9.2
* @category Combinator
*/
const useAll = (provided) => (reader) => () => reader(provided);
exports.useAll = useAll;
/**
* @since 0.9.2
* @category Combinator
*/
const provideAll = (provided) => (reader) => (e) => { var _a; return reader({ ...provided, ...((_a = e) !== null && _a !== void 0 ? _a : {}) }); };
exports.provideAll = provideAll;
/**
* @since 0.9.2
* @category Instance
*/
exports.UseSome = {
useSome: exports.useSome,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.UseAll = {
useAll: exports.useAll,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.ProvideSome = {
provideSome: exports.provideSome,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.ProvideAll = {
provideAll: exports.provideAll,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.Provide = {
useSome: exports.useSome,
useAll: exports.useAll,
provideSome: exports.provideSome,
provideAll: exports.provideAll,
};
//# sourceMappingURL=Reader.js.map