UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

88 lines 1.71 kB
/** * @typed/fp/Reader is an extension to fp-ts/Reader with ChainRec + MonadRec instances. * * @since 0.9.2 */ import { tailRec } from 'fp-ts/ChainRec'; import * as R from 'fp-ts/Reader'; import { pipe } from './function'; export * from 'fp-ts/Reader'; /** * @since 0.9.2 * @category Combinator */ export const chainRec = (f) => (value) => (r) => pipe(value, tailRec((a) => f(a)(r))); /** * @since 0.9.2 * @category Instance */ export const ChainRec = { chainRec, }; /** * @since 0.9.2 * @category Instance */ export const MonadRec = { ...R.Monad, chainRec, }; /** * @since 0.9.2 * @category Combinator */ export const useSome = (provided) => (reader) => (e) => reader({ ...e, ...provided }); /** * @since 0.9.2 * @category Combinator */ export const provideSome = (provided) => (reader) => (e) => reader({ ...provided, ...e }); /** * @since 0.9.2 * @category Combinator */ export const useAll = (provided) => (reader) => () => reader(provided); /** * @since 0.9.2 * @category Combinator */ export const provideAll = (provided) => (reader) => (e) => { var _a; return reader({ ...provided, ...((_a = e) !== null && _a !== void 0 ? _a : {}) }); }; /** * @since 0.9.2 * @category Instance */ export const UseSome = { useSome, }; /** * @since 0.9.2 * @category Instance */ export const UseAll = { useAll, }; /** * @since 0.9.2 * @category Instance */ export const ProvideSome = { provideSome, }; /** * @since 0.9.2 * @category Instance */ export const ProvideAll = { provideAll, }; /** * @since 0.9.2 * @category Instance */ export const Provide = { useSome, useAll, provideSome, provideAll, }; //# sourceMappingURL=Reader.js.map