import type { Eq } from "@principia/prelude/Eq"; import { elem } from "./guards"; /* * ------------------------------------------- * Functor Set * ------------------------------------------- */ export const map_ = (E: Eq) => (set: ReadonlySet, f: (a: A) => B) => { const elemE = elem(E); const r = new Set(); set.forEach((e) => { const v = f(e); if (!elemE(v)(r)) { r.add(v); } }); return r; }; export const map = (E: Eq) => (f: (a: A) => B) => (set: ReadonlySet) => map_(E)(set, f);