From 5d062233917a613a9c4a1116e4512d64608ace41 Mon Sep 17 00:00:00 2001 From: Nathaniel Holden Date: Wed, 5 Jun 2024 12:08:43 -0600 Subject: [PATCH] simplified set typing --- src/comparisons/disjoint.function.ts | 2 +- src/comparisons/equivalence.function.ts | 2 +- src/comparisons/pairwise-disjoint.function.ts | 2 +- src/comparisons/proper-subset.function.ts | 2 +- src/comparisons/proper-superset.function.ts | 2 +- src/comparisons/subset.function.ts | 2 +- src/comparisons/superset.function.ts | 2 +- src/operations/difference.function.ts | 6 +++--- src/operations/intersection.function.ts | 6 +++--- src/operations/union.function.ts | 4 ++-- src/operations/xor.function.ts | 10 +++++----- src/ordering/sort.function.ts | 4 ++-- 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/comparisons/disjoint.function.ts b/src/comparisons/disjoint.function.ts index fbdd90a..31f72be 100644 --- a/src/comparisons/disjoint.function.ts +++ b/src/comparisons/disjoint.function.ts @@ -12,7 +12,7 @@ export function disjoint(...sets: ReadonlySet[]): boolean; * * @description A disjoint B ⇔ A ∩ B = ∅ */ -export function disjoint>(...sets: S[]): boolean { +export function disjoint(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/equivalence.function.ts b/src/comparisons/equivalence.function.ts index 560093d..30b714c 100644 --- a/src/comparisons/equivalence.function.ts +++ b/src/comparisons/equivalence.function.ts @@ -11,7 +11,7 @@ export function equivalence(...sets: ReadonlySet[]): boolean; * * @description A ∼ B ⇔ (A ⊆ B) ∧ (B ⊆ A) */ -export function equivalence>(...sets: S[]): boolean { +export function equivalence(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/pairwise-disjoint.function.ts b/src/comparisons/pairwise-disjoint.function.ts index 75f3ef6..e306b47 100644 --- a/src/comparisons/pairwise-disjoint.function.ts +++ b/src/comparisons/pairwise-disjoint.function.ts @@ -10,7 +10,7 @@ export function pairwiseDisjoint(...sets: ReadonlySet[]): boolean; * * @description pairwise disjoint F ⇔ (∀A,B ∈ F) ⇒ (A ∩ B = ∅) */ -export function pairwiseDisjoint>(...sets: S[]): boolean { +export function pairwiseDisjoint(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/proper-subset.function.ts b/src/comparisons/proper-subset.function.ts index 9f508e5..4b30419 100644 --- a/src/comparisons/proper-subset.function.ts +++ b/src/comparisons/proper-subset.function.ts @@ -11,7 +11,7 @@ export function properSubset(...sets: ReadonlySet[]): boolean; * * @description A ⊂ B ⇔ (|A| < |B|) ∧ (∀x : (x ∈ A ⇒ x ∈ B)) */ -export function properSubset>(...sets: S[]): boolean { +export function properSubset(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/proper-superset.function.ts b/src/comparisons/proper-superset.function.ts index d2a8269..7cda30d 100644 --- a/src/comparisons/proper-superset.function.ts +++ b/src/comparisons/proper-superset.function.ts @@ -11,7 +11,7 @@ export function properSuperset(...sets: ReadonlySet[]): boolean; * * @description A ⊃ B ⇔ (|A| > |B|) ∧ (∀x : (x ∈ B ⇒ x ∈ A)) */ -export function properSuperset>(...sets: S[]): boolean { +export function properSuperset(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/subset.function.ts b/src/comparisons/subset.function.ts index 1071ead..b776134 100644 --- a/src/comparisons/subset.function.ts +++ b/src/comparisons/subset.function.ts @@ -10,7 +10,7 @@ export function subset(...sets: ReadonlySet[]): boolean; * * @description A ⊆ B ⇔ ∀x : (x ∈ A ⇒ x ∈ B) */ -export function subset>(...sets: S[]): boolean { +export function subset(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/comparisons/superset.function.ts b/src/comparisons/superset.function.ts index 1dc7008..0f1d53d 100644 --- a/src/comparisons/superset.function.ts +++ b/src/comparisons/superset.function.ts @@ -10,7 +10,7 @@ export function superset(...sets: ReadonlySet[]): boolean; * * @description A ⊇ B ⇔ ∀x : (x ∈ B ⇒ x ∈ A) */ -export function superset>(...sets: S[]): boolean { +export function superset(...sets: ReadonlySet[]): boolean { if (sets.length < 2) { return true; } diff --git a/src/operations/difference.function.ts b/src/operations/difference.function.ts index 8c6992c..99cc6b7 100644 --- a/src/operations/difference.function.ts +++ b/src/operations/difference.function.ts @@ -10,9 +10,9 @@ export function difference(...sets: ReadonlySet[]): ReadonlySet; * * @description A ∖ B ≔ { x : (x ∈ A) ∧ (x ∉ B) } */ -export function difference>(...sets: S[]): S { +export function difference(...sets: ReadonlySet[]): ReadonlySet { if (sets.length < 2) { - return new Set(sets.shift()) as ReadonlySet as S; + return new Set(sets.shift()); } const resultSet = new Set(); @@ -31,5 +31,5 @@ export function difference>(...sets: S[]): S { } } - return resultSet as ReadonlySet as S; + return resultSet; } diff --git a/src/operations/intersection.function.ts b/src/operations/intersection.function.ts index 494618d..1a40365 100644 --- a/src/operations/intersection.function.ts +++ b/src/operations/intersection.function.ts @@ -9,9 +9,9 @@ export function intersection(...sets: ReadonlySet[]): ReadonlySet; * * @description A ∩ B ≔ { x : (x ∈ A) ∧ (x ∈ B) } */ -export function intersection>(...sets: S[]): S { +export function intersection(...sets: ReadonlySet[]): ReadonlySet { if (sets.length < 2) { - return new Set(sets.shift()) as ReadonlySet as S; + return new Set(sets.shift()); } const resultSet = new Set(); @@ -32,5 +32,5 @@ export function intersection>(...sets: S[]): S { } } - return resultSet as ReadonlySet as S; + return resultSet; } diff --git a/src/operations/union.function.ts b/src/operations/union.function.ts index ccba1fe..99ebf37 100644 --- a/src/operations/union.function.ts +++ b/src/operations/union.function.ts @@ -9,7 +9,7 @@ export function union(...sets: ReadonlySet[]): ReadonlySet; * * @description A ∪ B ≔ { x : (x ∈ A) ∨ (x ∈ B) } */ -export function union>(...sets: S[]): S { +export function union(...sets: ReadonlySet[]): ReadonlySet { const resultSet = new Set(sets.shift()); for (const set of sets) { @@ -18,5 +18,5 @@ export function union>(...sets: S[]): S { } } - return resultSet as ReadonlySet as S; + return resultSet; } diff --git a/src/operations/xor.function.ts b/src/operations/xor.function.ts index 594be47..61e216d 100644 --- a/src/operations/xor.function.ts +++ b/src/operations/xor.function.ts @@ -12,9 +12,9 @@ export function xor(...sets: ReadonlySet[]): ReadonlySet; * * @description A ∆ B ≔ { x : (x ∈ A) ⊕ (x ∈ B) } */ -export function xor>(...sets: S[]): S { +export function xor(...sets: ReadonlySet[]): ReadonlySet { if (sets.length < 2) { - return new Set(sets.shift()) as ReadonlySet as S; + return new Set(sets.shift()); } const resultSet = new Set(); @@ -24,7 +24,7 @@ export function xor>(...sets: S[]): S { primaryLoop(primarySet, secondarySet); primaryLoop(secondarySet, primarySet); - function primaryLoop(primary: S, secondary: S): void { + function primaryLoop(primary: ReadonlySet, secondary: ReadonlySet): void { if (sets.length !== 0) { for (const element of primary) { if (!secondary.has(element)) { @@ -43,7 +43,7 @@ export function xor>(...sets: S[]): S { } sets.forEach(tertiaryLoop); - function tertiaryLoop(set: S, index: number): void { + function tertiaryLoop(set: ReadonlySet, index: number): void { if (index < sets.length - 1) { for (const element of set) { if (resultSet.has(element)) { @@ -64,5 +64,5 @@ export function xor>(...sets: S[]): S { } } - return resultSet as ReadonlySet as S; + return resultSet; } diff --git a/src/ordering/sort.function.ts b/src/ordering/sort.function.ts index 0e136a1..e8c07c5 100644 --- a/src/ordering/sort.function.ts +++ b/src/ordering/sort.function.ts @@ -12,6 +12,6 @@ export function sort(set: ReadonlySet, compareFunction?: (a: T, b: T) => n * or specifically as A ↑ or A ↓ depending on whether * the sort order is ascending or descending respectively. */ -export function sort>(set: S, compareFunction?: (a: T, b: T) => number): S { - return new Set(Array.from(set).sort(compareFunction)) as ReadonlySet as S; +export function sort(set: ReadonlySet, compareFunction?: (a: T, b: T) => number): ReadonlySet { + return new Set(Array.from(set).sort(compareFunction)); }