effect-ts-folds
Version:
Recursion schemes for effect-ts.
9 lines • 567 B
JavaScript
import { fix } from '#fix';
import { fanin, succeedBy, traverseSuspended } from '#util';
import { Effect as EF, flow, pipe } from 'effect';
import { hylo, hyloE } from '../refold/schemes.js';
export const anaE = F => ψ => hyloE(F)(ψ, flow(fix, EF.succeed));
export const apoE = F => ψ => a => pipe(a, ψ, EF.flatMap(traverseSuspended(F)(eif => pipe(eif, fanin(EF.succeed, apoE(F)(ψ))))), EF.map(fix));
export const ana = F => ψ => hylo(F)(ψ, fix);
export const apo = F => ψ => flow(pipe(ψ, succeedBy, apoE(F)), EF.runSync);
//# sourceMappingURL=schemes.js.map