UNPKG

@jsoldi/hkt

Version:

Higher kinded types for typescript and a few utility monads.

31 lines 1.12 kB
import { monadPlus } from "../classes/monadPlus.js"; /** The set module, providing a set of functions for working with sets. */ export const set = (() => { const union = (fa) => (fb) => fa.union(fb); const intersection = (fa) => (fb) => fa.intersection(fb); const difference = (fa) => (fb) => fa.difference(fb); const symmetricDifference = (fa) => (fb) => fa.symmetricDifference(fb); const isSubsetOf = (fa) => (fb) => fa.isSubsetOf(fb); const isSupersetOf = (fa) => (fb) => fa.isSupersetOf(fb); const isDisjointFrom = (fa) => (fb) => fa.isDisjointFrom(fb); const unit = (a) => new Set([a]); const bind = (fa, f) => new Set([...fa].flatMap(a => [...f(a)])); const map = (fa, f) => new Set([...fa].map(f)); return { ...monadPlus({ unit, bind, map, empty: () => new Set(), append: (fa, fb) => fa.union(fb), }), union, intersection, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom }; })(); //# sourceMappingURL=set.js.map