UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

83 lines 1.64 kB
import * as E from 'fp-ts/Either'; import { pipe } from 'fp-ts/function'; import * as RT from 'fp-ts/ReaderTask'; /** * @since 0.9.2 * @category Combinator */ export const chainRec = (f) => (value) => pipe(value, f, RT.chain(E.match(chainRec(f), RT.of))); // Recursion is okay because promise is always async /** * @since 0.9.2 * @category Instance */ export const ChainRec = { chainRec, }; /** * @since 0.9.2 * @category Instance */ export const MonadRec = { ...RT.Monad, chainRec, }; /** * @since 0.9.2 * @category Combinator */ export const useSome = (provided) => (readerTask) => (r) => readerTask({ ...r, ...provided }); /** * @since 0.9.2 * @category Combinator */ export const provideSome = (provided) => (readerTask) => (r) => readerTask({ ...provided, ...r }); /** * @since 0.9.2 * @category Combinator */ export const useAll = (provided) => (readerTask) => () => readerTask(provided); /** * @since 0.9.2 * @category Combinator */ export const provideAll = (provided) => (readerTask) => (r) => readerTask({ ...provided, ...r }); /** * @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/ReaderTask'; //# sourceMappingURL=ReaderTask.js.map