effect-ts-folds
Version:
Recursion schemes for effect-ts.
10 lines • 578 B
JavaScript
import { flow } from 'effect';
import { cata } from '../fold/schemes.js';
import { ana } from '../unfold/schemes.js';
import { Law, LawSet } from 'effect-ts-laws';
import { hylo } from './schemes.js';
export const hyloLaws = (F, { equalsA, a, φ, ψ }) => {
return LawSet()('hylomorphism', Law('refold is unfold followed by fold', 'hylo(φ, ψ) = cata(φ) ∘ ana(ψ)', a, ψ, φ)((a, ψ, φ) => equalsA(hylo(F)(ψ, φ)(a), cataAnaBasedHylo(F)(ψ, φ)(a))));
};
export const cataAnaBasedHylo = F => (ψ, φ) => flow(ana(F)(ψ), cata(F)(φ));
//# sourceMappingURL=laws.js.map