@typed/fp
Version:
Data Structures and Resources for fp-ts
30 lines • 576 B
JavaScript
import * as E from 'fp-ts/Either';
import * as S from 'fp-ts/State';
/**
* @since 0.9.2
* @category Combinator
*/
export const chainRec = (f) => (value) => (s) => {
let result = f(value)(s);
while (E.isLeft(result[0])) {
result = f(value)(result[1]);
}
return [result[0].right, result[1]];
};
/**
* @since 0.9.2
* @category Instance
*/
export const ChainRec = {
chainRec,
};
/**
* @since 0.9.2
* @category Instance
*/
export const MonadRec = {
...S.Monad,
chainRec,
};
export * from 'fp-ts/State';
//# sourceMappingURL=State.js.map