Skip to content

Commit fe2d15d

Browse files
committed
up
1 parent 29e578c commit fe2d15d

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

src/utils/set/Set.ts

+26-11
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
export function setUnion<T>(x: Set<T>, y: Set<T>): Set<T> {
1+
export function setUnion<T>(x: ReadonlySet<T>, y: ReadonlySet<T>): Set<T> {
22
return new Set([...x, ...y])
33
}
44

5-
export function setEqual<T>(x: Set<T>, y: Set<T>): boolean {
6-
return x.size === y.size && setUnion(x, y).size === x.size
7-
}
8-
9-
export function setIntersection<T>(x: Set<T>, y: Set<T>): Set<T> {
5+
export function setIntersection<T>(
6+
x: ReadonlySet<T>,
7+
y: ReadonlySet<T>,
8+
): Set<T> {
109
const z = new Set<T>()
1110
for (const e of x) {
1211
if (y.has(e)) {
@@ -17,7 +16,7 @@ export function setIntersection<T>(x: Set<T>, y: Set<T>): Set<T> {
1716
return z
1817
}
1918

20-
export function setDifference<T>(x: Set<T>, y: Set<T>): Set<T> {
19+
export function setDifference<T>(x: ReadonlySet<T>, y: ReadonlySet<T>): Set<T> {
2120
const z = new Set<T>()
2221
for (const e of x) {
2322
if (!y.has(e)) {
@@ -28,11 +27,17 @@ export function setDifference<T>(x: Set<T>, y: Set<T>): Set<T> {
2827
return z
2928
}
3029

31-
export function setSymmetricDifference<T>(x: Set<T>, y: Set<T>): Set<T> {
30+
export function setSymmetricDifference<T>(
31+
x: ReadonlySet<T>,
32+
y: ReadonlySet<T>,
33+
): Set<T> {
3234
return setDifference(setUnion(x, y), setIntersection(x, y))
3335
}
3436

35-
export function setIsSubsetOf<T>(x: Set<T>, y: Set<T>): boolean {
37+
export function setIsSubsetOf<T>(
38+
x: ReadonlySet<T>,
39+
y: ReadonlySet<T>,
40+
): boolean {
3641
for (const e of x) {
3742
if (!y.has(e)) {
3843
return false
@@ -42,11 +47,21 @@ export function setIsSubsetOf<T>(x: Set<T>, y: Set<T>): boolean {
4247
return true
4348
}
4449

45-
export function setIsSupersetOf<T>(x: Set<T>, y: Set<T>): boolean {
50+
export function setEqual<T>(x: ReadonlySet<T>, y: ReadonlySet<T>): boolean {
51+
return setIsSubsetOf(x, y) && setIsSubsetOf(y, x)
52+
}
53+
54+
export function setIsSupersetOf<T>(
55+
x: ReadonlySet<T>,
56+
y: ReadonlySet<T>,
57+
): boolean {
4658
return setIsSubsetOf(y, x)
4759
}
4860

49-
export function setIsDisjointFrom<T>(x: Set<T>, y: Set<T>): boolean {
61+
export function setIsDisjointFrom<T>(
62+
x: ReadonlySet<T>,
63+
y: ReadonlySet<T>,
64+
): boolean {
5065
for (const e of x) {
5166
if (y.has(e)) {
5267
return false

0 commit comments

Comments
 (0)