UNPKG

effect-ts-folds

Version:
10 lines 578 B
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