@typed/fp
Version:
Data Structures and Resources for fp-ts
83 lines • 1.64 kB
JavaScript
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