UNPKG

effect-ts-laws

Version:
15 lines 851 B
import { Law, LawSet } from '#law'; import { Foldable as FO } from '@effect/typeclass'; import { pipe } from 'effect'; import { foldableLaws } from './Foldable.js'; import { unfoldGiven } from './given.js'; /** * Typeclass laws for `RightFoldable`. * @category typeclass laws */ export const rightFoldableLaws = (given, suffix) => { const { Monoid: monoid, F, fa, endoA, equalsA } = unfoldGiven(given); const combineMap = pipe(monoid, FO.combineMap(F)), { reduceRight } = F, { combine } = monoid; return pipe(given, foldableLaws, LawSet)(`RightFoldable${suffix ?? ''}`, Law('reduceRight', 'reduceRight(∅, (p,a) ⇒ aa(a) ⊕ p) = combineMap(Monoid)(aa)', fa, endoA)((fa, endoA) => equalsA(pipe(fa, reduceRight(monoid.empty, (p, a) => combine(endoA(a), p))), pipe(fa, combineMap(endoA))))); }; //# sourceMappingURL=RightFoldable.js.map