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