import type { List } from "../prelude.d.mts"; import { toList } from "../prelude.mjs"; export function any( set: Set, predicate: (member: a) => boolean, ): boolean { for (const member of set) { if (predicate(member)) { return true; } } return false; } export function contains(set: Set, member: a): boolean { return set.has(member); } export function delete_member(set: Set, member: a): Set { set = new Set(set); set.delete(member); return set; } export function difference(set_a: Set, set_b: Set): Set { return set_a.difference(set_b); } export function insert(set: Set, member: a): Set { return new Set(set).add(member); } export function intersection(set_a: Set, set_b: Set): Set { return set_a.intersection(set_b); } export function is_disjoint(set_a: Set, set_b: Set): boolean { return set_a.isDisjointFrom(set_b); } export function is_subset(set_a: Set, set_b: Set): boolean { return set_a.isSubsetOf(set_b); } export function new_set(iterable?: Iterable): Set { // TODO: test for list and convert to array return new Set(iterable); } export function size(set: Set): number { return set.size; } export function to_list(set: Set): List { return toList([...set]); } export function union(set_a: Set, set_b: Set): Set { return set_a.union(set_b); }