UNPKG

effect-ts-laws

Version:
12 lines 614 B
import { Law, lawTests } from '#law'; import { flow, pipe } from 'effect'; import { unfoldGiven } from './given.js'; /** * Typeclass laws for `FlatMap`. * @category typeclass laws */ export const flatMapLaws = (given, suffix) => { const { F, fa, equalsFc, afb, bfc } = unfoldGiven(given); return lawTests(`FlatMap${suffix ?? ''}`, Law('associativity', 'fa ▹ flatMap(afb) ▹ flatMap(bfc) = fa ▹ flatMap(flatMap(bfc) ∘ afb)', fa, afb, bfc)((fa, afb, bfc) => equalsFc(pipe(fa, F.flatMap(afb), F.flatMap(bfc)), pipe(fa, F.flatMap(flow(afb, F.flatMap(bfc))))))); }; //# sourceMappingURL=FlatMap.js.map