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