recursive-set 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -10,57 +10,59 @@ exports.fromIterable = fromIterable;
10
10
  const functional_red_black_tree_1 = __importDefault(require("functional-red-black-tree"));
11
11
  /**
12
12
  * @module recursive-set
13
- * A mutable recursive set implementation enforcing Cantor's ZFC axioms
14
- * Powered by Red-Black Trees for O(log n) operations
13
+ * A mutable recursive set implementation enforcing Cantor's ZFC axioms.
14
+ * Powered by functional Red-Black Trees for O(log n) operations and O(1) cloning.
15
15
  */
16
- /**
17
- * Comparator function for ZFC sets
18
- * Returns -1 if a < b, 1 if a > b, 0 if a == b (structural equality)
19
- */
20
- function compare(a, b) {
21
- // 1. Identity optimization
22
- if (a === b)
23
- return 0;
24
- // 2. Type separation: Sets are "greater" than primitives
25
- const isSetA = a instanceof RecursiveSet;
26
- const isSetB = b instanceof RecursiveSet;
27
- if (isSetA !== isSetB)
28
- return isSetA ? 1 : -1;
29
- // 3. Primitives
30
- if (!isSetA) {
31
- if (typeof a !== typeof b) {
32
- return typeof a > typeof b ? 1 : -1;
16
+ class RecursiveSet {
17
+ // Underlying persistent data structure
18
+ _tree;
19
+ // Internal XOR-based hash for O(1) inequality checks
20
+ _hash = 0;
21
+ /**
22
+ * Static comparator for Red-Black Tree ordering.
23
+ * Handles primitives, RecursiveSets, and deep structural equality.
24
+ */
25
+ static compare(a, b) {
26
+ // 1. Identity optimization
27
+ if (a === b)
28
+ return 0;
29
+ // 2. Type separation
30
+ const isSetA = a instanceof RecursiveSet;
31
+ const isSetB = b instanceof RecursiveSet;
32
+ if (isSetA !== isSetB)
33
+ return isSetA ? 1 : -1;
34
+ // 3. Primitives
35
+ if (!isSetA) {
36
+ if (typeof a !== typeof b)
37
+ return typeof a > typeof b ? 1 : -1;
38
+ if (a < b)
39
+ return -1;
40
+ if (a > b)
41
+ return 1;
42
+ return 0;
43
+ }
44
+ // 4. Recursive Sets
45
+ const sizeA = a.size;
46
+ const sizeB = b.size;
47
+ if (sizeA !== sizeB)
48
+ return sizeA < sizeB ? -1 : 1;
49
+ // Hash mismatch implies inequality (O(1))
50
+ if (a._hash !== b._hash)
51
+ return a._hash < b._hash ? -1 : 1;
52
+ // Deep structural comparison using internal iterators (low-level optimization)
53
+ let iterA = a._tree.begin;
54
+ let iterB = b._tree.begin;
55
+ while (iterA.valid && iterB.valid) {
56
+ const cmp = RecursiveSet.compare(iterA.key, iterB.key);
57
+ if (cmp !== 0)
58
+ return cmp;
59
+ iterA.next();
60
+ iterB.next();
33
61
  }
34
- if (a < b)
35
- return -1;
36
- if (a > b)
37
- return 1;
38
62
  return 0;
39
63
  }
40
- // 4. Recursive Sets
41
- const sizeA = a.size;
42
- const sizeB = b.size;
43
- if (sizeA !== sizeB)
44
- return sizeA < sizeB ? -1 : 1;
45
- // Lexicographical comparison
46
- const itA = a[Symbol.iterator]();
47
- const itB = b[Symbol.iterator]();
48
- let nextA = itA.next();
49
- let nextB = itB.next();
50
- while (!nextA.done) {
51
- const cmp = compare(nextA.value, nextB.value);
52
- if (cmp !== 0)
53
- return cmp;
54
- nextA = itA.next();
55
- nextB = itB.next();
56
- }
57
- return 0;
58
- }
59
- class RecursiveSet {
60
- // Red-Black Tree (immutable structure, we replace on mutation)
61
- _tree; // Type from functional-red-black-tree
62
64
  constructor(...elements) {
63
- this._tree = (0, functional_red_black_tree_1.default)(compare);
65
+ this._tree = (0, functional_red_black_tree_1.default)(RecursiveSet.compare);
64
66
  for (const el of elements) {
65
67
  this.add(el);
66
68
  }
@@ -68,59 +70,75 @@ class RecursiveSet {
68
70
  // === Copy-on-Write Support ===
69
71
  /**
70
72
  * Creates a shallow copy of the set in O(1) time.
71
- * Due to the immutable nature of the underlying tree,
72
- * this is extremely efficient (structural sharing).
73
+ * Leveraging the persistent nature of the underlying tree.
73
74
  */
74
75
  clone() {
75
76
  const clone = new RecursiveSet();
76
- // We replace the empty tree directly with the reference to the current tree.
77
- // Since the tree is persistent/immutable, this is safe and instant.
78
77
  clone._tree = this._tree;
78
+ clone._hash = this._hash;
79
79
  return clone;
80
80
  }
81
81
  // === Mutable Operations ===
82
82
  add(element) {
83
- // 0. Guard: Explicitly ban NaN
84
83
  if (typeof element === "number" && Number.isNaN(element)) {
85
84
  throw new Error("NaN is not supported as an element of RecursiveSet");
86
85
  }
87
- // 1. Defensive: Idempotency Check
88
- // Avoid duplicate inserts if the element is already present.
89
- // This also mitigates race-condition-like issues with persistent tree structures during rapid mutations.
86
+ // Idempotency check prevents redundant hash updates and tree operations
90
87
  if (this.has(element)) {
91
88
  return this;
92
89
  }
93
- // 2. Cycle Check (Foundation Axiom)
90
+ // Enforce Foundation Axiom (prevent cycles)
94
91
  if (element instanceof RecursiveSet) {
95
92
  if (this._wouldCreateCycle(element)) {
96
93
  throw new Error("Foundation axiom violated: membership cycle detected");
97
94
  }
98
95
  }
99
- // 3. Insert
96
+ // Update Hash (XOR)
97
+ this._hash = (this._hash ^ this._computeHash(element)) | 0;
98
+ // Insert into persistent tree
100
99
  this._tree = this._tree.insert(element, true);
101
100
  return this;
102
101
  }
103
102
  remove(element) {
103
+ if (!this.has(element)) {
104
+ return this;
105
+ }
106
+ // Update Hash (XOR removes the element from hash)
107
+ this._hash = (this._hash ^ this._computeHash(element)) | 0;
104
108
  this._tree = this._tree.remove(element);
105
109
  return this;
106
110
  }
107
111
  clear() {
108
- this._tree = (0, functional_red_black_tree_1.default)(compare);
112
+ this._tree = (0, functional_red_black_tree_1.default)(RecursiveSet.compare);
113
+ this._hash = 0;
109
114
  return this;
110
115
  }
116
+ _computeHash(element) {
117
+ if (element instanceof RecursiveSet)
118
+ return element._hash;
119
+ if (typeof element === 'number')
120
+ return element | 0;
121
+ if (typeof element === 'string') {
122
+ let h = 0;
123
+ for (let i = 0; i < element.length; i++)
124
+ h = Math.imul(31, h) + element.charCodeAt(i) | 0;
125
+ return h;
126
+ }
127
+ return 0;
128
+ }
111
129
  // === Immutable Operations ===
112
130
  union(other) {
113
- const result = new RecursiveSet();
114
- for (const el of this)
115
- result.add(el);
131
+ const result = this.clone(); // Optimization: Start with clone of this
116
132
  for (const el of other)
117
133
  result.add(el);
118
134
  return result;
119
135
  }
120
136
  intersection(other) {
121
137
  const result = new RecursiveSet();
122
- for (const el of this) {
123
- if (other.has(el)) {
138
+ // Iterate over smaller set for performance optimization
139
+ const [smaller, larger] = this.size < other.size ? [this, other] : [other, this];
140
+ for (const el of smaller) {
141
+ if (larger.has(el)) {
124
142
  result.add(el);
125
143
  }
126
144
  }
@@ -136,13 +154,16 @@ class RecursiveSet {
136
154
  return result;
137
155
  }
138
156
  symmetricDifference(other) {
139
- return this.union(other).difference(this.intersection(other));
157
+ // (A \ B) U (B \ A)
158
+ return this.difference(other).union(other.difference(this));
140
159
  }
141
160
  powerset() {
161
+ const n = this.size;
162
+ if (n > 30)
163
+ throw new Error("Powerset size exceeds 32-bit integer limit");
142
164
  const elements = [];
143
165
  this._tree.forEach((key) => { elements.push(key); return undefined; });
144
166
  const subsets = [];
145
- const n = elements.length;
146
167
  for (let i = 0; i < (1 << n); i++) {
147
168
  const subset = new RecursiveSet();
148
169
  for (let j = 0; j < n; j++) {
@@ -160,6 +181,7 @@ class RecursiveSet {
160
181
  for (const y of other) {
161
182
  const valX = x;
162
183
  const valY = y;
184
+ // Kuratowski pair: (x, y) = {{x}, {x, y}}
163
185
  const pair = new RecursiveSet(new RecursiveSet(valX), new RecursiveSet(valX, valY));
164
186
  pairs.push(pair);
165
187
  }
@@ -171,6 +193,8 @@ class RecursiveSet {
171
193
  return this._tree.get(element) !== undefined;
172
194
  }
173
195
  isSubset(other) {
196
+ if (this.size > other.size)
197
+ return false;
174
198
  for (const el of this) {
175
199
  if (!other.has(el))
176
200
  return false;
@@ -187,7 +211,7 @@ class RecursiveSet {
187
211
  return this.size === 0;
188
212
  }
189
213
  equals(other) {
190
- return compare(this, other) === 0;
214
+ return RecursiveSet.compare(this, other) === 0;
191
215
  }
192
216
  // === Internals ===
193
217
  _wouldCreateCycle(element) {
@@ -200,11 +224,13 @@ class RecursiveSet {
200
224
  if (visited.has(current))
201
225
  continue;
202
226
  visited.add(current);
203
- for (const child of current) {
204
- if (child instanceof RecursiveSet) {
205
- stack.push(child);
227
+ // Optimization: Direct internal tree traversal avoids iterator overhead
228
+ current._tree.forEach((key) => {
229
+ if (key instanceof RecursiveSet) {
230
+ stack.push(key);
206
231
  }
207
- }
232
+ return undefined;
233
+ });
208
234
  }
209
235
  return false;
210
236
  }
@@ -217,10 +243,13 @@ class RecursiveSet {
217
243
  this._tree.forEach((key) => { result.add(key); return undefined; });
218
244
  return result;
219
245
  }
246
+ // Lazy Iterator (Critical for performance)
220
247
  *[Symbol.iterator]() {
221
- const keys = [];
222
- this._tree.forEach((key) => { keys.push(key); return undefined; });
223
- yield* keys;
248
+ let iter = this._tree.begin;
249
+ while (iter.valid) {
250
+ yield iter.key;
251
+ iter.next();
252
+ }
224
253
  }
225
254
  toString() {
226
255
  if (this.isEmpty())
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,26 @@
1
+ /**
2
+ * @module recursive-set
3
+ * A mutable recursive set implementation enforcing Cantor's ZFC axioms.
4
+ * Powered by functional Red-Black Trees for O(log n) operations and O(1) cloning.
5
+ */
1
6
  export declare class RecursiveSet<T = any> {
2
7
  private _tree;
8
+ private _hash;
9
+ /**
10
+ * Static comparator for Red-Black Tree ordering.
11
+ * Handles primitives, RecursiveSets, and deep structural equality.
12
+ */
13
+ static compare(a: any, b: any): number;
3
14
  constructor(...elements: Array<T | RecursiveSet<T>>);
4
15
  /**
5
16
  * Creates a shallow copy of the set in O(1) time.
6
- * Due to the immutable nature of the underlying tree,
7
- * this is extremely efficient (structural sharing).
17
+ * Leveraging the persistent nature of the underlying tree.
8
18
  */
9
19
  clone(): RecursiveSet<T>;
10
20
  add(element: T | RecursiveSet<T>): this;
11
21
  remove(element: T | RecursiveSet<T>): this;
12
22
  clear(): this;
23
+ private _computeHash;
13
24
  union(other: RecursiveSet<T>): RecursiveSet<T>;
14
25
  intersection(other: RecursiveSet<T>): RecursiveSet<T>;
15
26
  difference(other: RecursiveSet<T>): RecursiveSet<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAqDA,qBAAa,YAAY,CAAC,CAAC,GAAG,GAAG;IAE7B,OAAO,CAAC,KAAK,CAAM;gBAEP,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAUnD;;;;OAIG;IACH,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;IAWxB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAyBvC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1C,KAAK,IAAI,IAAI;IAOb,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAO9C,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAUrD,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAUnD,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAI5D,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAmBzC,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAsB9E,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAOzC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI3C,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI/C,OAAO,IAAI,OAAO;IAIlB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAMvC,OAAO,CAAC,iBAAiB;IAsBzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAMhC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAMnD,QAAQ,IAAI,MAAM;CAiBrB;AAGD,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAExD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAEtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,YAAY,CAAC,CAAC,GAAG,GAAG;IAE7B,OAAO,CAAC,KAAK,CAAM;IAEnB,OAAO,CAAC,KAAK,CAAa;IAE1B;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM;gBAwC1B,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAUnD;;;OAGG;IACH,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;IASxB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAyBvC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAY1C,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,YAAY;IAcpB,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAM9C,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAYrD,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAUnD,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAK5D,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAqBzC,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAsB9E,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAQzC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI3C,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAI/C,OAAO,IAAI,OAAO;IAIlB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAMvC,OAAO,CAAC,iBAAiB;IAwBzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAOhC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAQnD,QAAQ,IAAI,MAAM;CAiBrB;AAID,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAExD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAEtE"}
package/dist/esm/index.js CHANGED
@@ -1,57 +1,59 @@
1
1
  import createTree from 'functional-red-black-tree';
2
2
  /**
3
3
  * @module recursive-set
4
- * A mutable recursive set implementation enforcing Cantor's ZFC axioms
5
- * Powered by Red-Black Trees for O(log n) operations
4
+ * A mutable recursive set implementation enforcing Cantor's ZFC axioms.
5
+ * Powered by functional Red-Black Trees for O(log n) operations and O(1) cloning.
6
6
  */
7
- /**
8
- * Comparator function for ZFC sets
9
- * Returns -1 if a < b, 1 if a > b, 0 if a == b (structural equality)
10
- */
11
- function compare(a, b) {
12
- // 1. Identity optimization
13
- if (a === b)
14
- return 0;
15
- // 2. Type separation: Sets are "greater" than primitives
16
- const isSetA = a instanceof RecursiveSet;
17
- const isSetB = b instanceof RecursiveSet;
18
- if (isSetA !== isSetB)
19
- return isSetA ? 1 : -1;
20
- // 3. Primitives
21
- if (!isSetA) {
22
- if (typeof a !== typeof b) {
23
- return typeof a > typeof b ? 1 : -1;
7
+ export class RecursiveSet {
8
+ // Underlying persistent data structure
9
+ _tree;
10
+ // Internal XOR-based hash for O(1) inequality checks
11
+ _hash = 0;
12
+ /**
13
+ * Static comparator for Red-Black Tree ordering.
14
+ * Handles primitives, RecursiveSets, and deep structural equality.
15
+ */
16
+ static compare(a, b) {
17
+ // 1. Identity optimization
18
+ if (a === b)
19
+ return 0;
20
+ // 2. Type separation
21
+ const isSetA = a instanceof RecursiveSet;
22
+ const isSetB = b instanceof RecursiveSet;
23
+ if (isSetA !== isSetB)
24
+ return isSetA ? 1 : -1;
25
+ // 3. Primitives
26
+ if (!isSetA) {
27
+ if (typeof a !== typeof b)
28
+ return typeof a > typeof b ? 1 : -1;
29
+ if (a < b)
30
+ return -1;
31
+ if (a > b)
32
+ return 1;
33
+ return 0;
34
+ }
35
+ // 4. Recursive Sets
36
+ const sizeA = a.size;
37
+ const sizeB = b.size;
38
+ if (sizeA !== sizeB)
39
+ return sizeA < sizeB ? -1 : 1;
40
+ // Hash mismatch implies inequality (O(1))
41
+ if (a._hash !== b._hash)
42
+ return a._hash < b._hash ? -1 : 1;
43
+ // Deep structural comparison using internal iterators (low-level optimization)
44
+ let iterA = a._tree.begin;
45
+ let iterB = b._tree.begin;
46
+ while (iterA.valid && iterB.valid) {
47
+ const cmp = RecursiveSet.compare(iterA.key, iterB.key);
48
+ if (cmp !== 0)
49
+ return cmp;
50
+ iterA.next();
51
+ iterB.next();
24
52
  }
25
- if (a < b)
26
- return -1;
27
- if (a > b)
28
- return 1;
29
53
  return 0;
30
54
  }
31
- // 4. Recursive Sets
32
- const sizeA = a.size;
33
- const sizeB = b.size;
34
- if (sizeA !== sizeB)
35
- return sizeA < sizeB ? -1 : 1;
36
- // Lexicographical comparison
37
- const itA = a[Symbol.iterator]();
38
- const itB = b[Symbol.iterator]();
39
- let nextA = itA.next();
40
- let nextB = itB.next();
41
- while (!nextA.done) {
42
- const cmp = compare(nextA.value, nextB.value);
43
- if (cmp !== 0)
44
- return cmp;
45
- nextA = itA.next();
46
- nextB = itB.next();
47
- }
48
- return 0;
49
- }
50
- export class RecursiveSet {
51
- // Red-Black Tree (immutable structure, we replace on mutation)
52
- _tree; // Type from functional-red-black-tree
53
55
  constructor(...elements) {
54
- this._tree = createTree(compare);
56
+ this._tree = createTree(RecursiveSet.compare);
55
57
  for (const el of elements) {
56
58
  this.add(el);
57
59
  }
@@ -59,59 +61,75 @@ export class RecursiveSet {
59
61
  // === Copy-on-Write Support ===
60
62
  /**
61
63
  * Creates a shallow copy of the set in O(1) time.
62
- * Due to the immutable nature of the underlying tree,
63
- * this is extremely efficient (structural sharing).
64
+ * Leveraging the persistent nature of the underlying tree.
64
65
  */
65
66
  clone() {
66
67
  const clone = new RecursiveSet();
67
- // We replace the empty tree directly with the reference to the current tree.
68
- // Since the tree is persistent/immutable, this is safe and instant.
69
68
  clone._tree = this._tree;
69
+ clone._hash = this._hash;
70
70
  return clone;
71
71
  }
72
72
  // === Mutable Operations ===
73
73
  add(element) {
74
- // 0. Guard: Explicitly ban NaN
75
74
  if (typeof element === "number" && Number.isNaN(element)) {
76
75
  throw new Error("NaN is not supported as an element of RecursiveSet");
77
76
  }
78
- // 1. Defensive: Idempotency Check
79
- // Avoid duplicate inserts if the element is already present.
80
- // This also mitigates race-condition-like issues with persistent tree structures during rapid mutations.
77
+ // Idempotency check prevents redundant hash updates and tree operations
81
78
  if (this.has(element)) {
82
79
  return this;
83
80
  }
84
- // 2. Cycle Check (Foundation Axiom)
81
+ // Enforce Foundation Axiom (prevent cycles)
85
82
  if (element instanceof RecursiveSet) {
86
83
  if (this._wouldCreateCycle(element)) {
87
84
  throw new Error("Foundation axiom violated: membership cycle detected");
88
85
  }
89
86
  }
90
- // 3. Insert
87
+ // Update Hash (XOR)
88
+ this._hash = (this._hash ^ this._computeHash(element)) | 0;
89
+ // Insert into persistent tree
91
90
  this._tree = this._tree.insert(element, true);
92
91
  return this;
93
92
  }
94
93
  remove(element) {
94
+ if (!this.has(element)) {
95
+ return this;
96
+ }
97
+ // Update Hash (XOR removes the element from hash)
98
+ this._hash = (this._hash ^ this._computeHash(element)) | 0;
95
99
  this._tree = this._tree.remove(element);
96
100
  return this;
97
101
  }
98
102
  clear() {
99
- this._tree = createTree(compare);
103
+ this._tree = createTree(RecursiveSet.compare);
104
+ this._hash = 0;
100
105
  return this;
101
106
  }
107
+ _computeHash(element) {
108
+ if (element instanceof RecursiveSet)
109
+ return element._hash;
110
+ if (typeof element === 'number')
111
+ return element | 0;
112
+ if (typeof element === 'string') {
113
+ let h = 0;
114
+ for (let i = 0; i < element.length; i++)
115
+ h = Math.imul(31, h) + element.charCodeAt(i) | 0;
116
+ return h;
117
+ }
118
+ return 0;
119
+ }
102
120
  // === Immutable Operations ===
103
121
  union(other) {
104
- const result = new RecursiveSet();
105
- for (const el of this)
106
- result.add(el);
122
+ const result = this.clone(); // Optimization: Start with clone of this
107
123
  for (const el of other)
108
124
  result.add(el);
109
125
  return result;
110
126
  }
111
127
  intersection(other) {
112
128
  const result = new RecursiveSet();
113
- for (const el of this) {
114
- if (other.has(el)) {
129
+ // Iterate over smaller set for performance optimization
130
+ const [smaller, larger] = this.size < other.size ? [this, other] : [other, this];
131
+ for (const el of smaller) {
132
+ if (larger.has(el)) {
115
133
  result.add(el);
116
134
  }
117
135
  }
@@ -127,13 +145,16 @@ export class RecursiveSet {
127
145
  return result;
128
146
  }
129
147
  symmetricDifference(other) {
130
- return this.union(other).difference(this.intersection(other));
148
+ // (A \ B) U (B \ A)
149
+ return this.difference(other).union(other.difference(this));
131
150
  }
132
151
  powerset() {
152
+ const n = this.size;
153
+ if (n > 30)
154
+ throw new Error("Powerset size exceeds 32-bit integer limit");
133
155
  const elements = [];
134
156
  this._tree.forEach((key) => { elements.push(key); return undefined; });
135
157
  const subsets = [];
136
- const n = elements.length;
137
158
  for (let i = 0; i < (1 << n); i++) {
138
159
  const subset = new RecursiveSet();
139
160
  for (let j = 0; j < n; j++) {
@@ -151,6 +172,7 @@ export class RecursiveSet {
151
172
  for (const y of other) {
152
173
  const valX = x;
153
174
  const valY = y;
175
+ // Kuratowski pair: (x, y) = {{x}, {x, y}}
154
176
  const pair = new RecursiveSet(new RecursiveSet(valX), new RecursiveSet(valX, valY));
155
177
  pairs.push(pair);
156
178
  }
@@ -162,6 +184,8 @@ export class RecursiveSet {
162
184
  return this._tree.get(element) !== undefined;
163
185
  }
164
186
  isSubset(other) {
187
+ if (this.size > other.size)
188
+ return false;
165
189
  for (const el of this) {
166
190
  if (!other.has(el))
167
191
  return false;
@@ -178,7 +202,7 @@ export class RecursiveSet {
178
202
  return this.size === 0;
179
203
  }
180
204
  equals(other) {
181
- return compare(this, other) === 0;
205
+ return RecursiveSet.compare(this, other) === 0;
182
206
  }
183
207
  // === Internals ===
184
208
  _wouldCreateCycle(element) {
@@ -191,11 +215,13 @@ export class RecursiveSet {
191
215
  if (visited.has(current))
192
216
  continue;
193
217
  visited.add(current);
194
- for (const child of current) {
195
- if (child instanceof RecursiveSet) {
196
- stack.push(child);
218
+ // Optimization: Direct internal tree traversal avoids iterator overhead
219
+ current._tree.forEach((key) => {
220
+ if (key instanceof RecursiveSet) {
221
+ stack.push(key);
197
222
  }
198
- }
223
+ return undefined;
224
+ });
199
225
  }
200
226
  return false;
201
227
  }
@@ -208,10 +234,13 @@ export class RecursiveSet {
208
234
  this._tree.forEach((key) => { result.add(key); return undefined; });
209
235
  return result;
210
236
  }
237
+ // Lazy Iterator (Critical for performance)
211
238
  *[Symbol.iterator]() {
212
- const keys = [];
213
- this._tree.forEach((key) => { keys.push(key); return undefined; });
214
- yield* keys;
239
+ let iter = this._tree.begin;
240
+ while (iter.valid) {
241
+ yield iter.key;
242
+ iter.next();
243
+ }
215
244
  }
216
245
  toString() {
217
246
  if (this.isEmpty())
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recursive-set",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Mutable recursive sets with ZFC axioms for TypeScript",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/esm/index.d.ts",