UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

84 lines 1.67 kB
import { pipe } from 'fp-ts/function'; import * as RE from 'fp-ts/ReaderEither'; import { swapEithers } from './internal'; import * as R from './Reader'; /** * @since 0.9.2 * @category Combinator */ export const chainRec = (f) => (value) => pipe(value, R.chainRec((a) => pipe(a, f, R.map(swapEithers)))); /** * @since 0.9.2 * @category Instance */ export const ChainRec = { chainRec, }; /** * @since 0.9.2 * @category Instance */ export const MonadRec = { ...RE.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, }; export * from 'fp-ts/ReaderEither'; //# sourceMappingURL=ReaderEither.js.map