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);
}