@fncts/base 0.0.41 → 0.0.43

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.
Files changed (310) hide show
  1. package/_cjs/collection/Iterable/api.cjs +5 -5
  2. package/_cjs/collection/Iterable/api.cjs.map +1 -1
  3. package/_cjs/collection/immutable/Conc/api.cjs +14 -7
  4. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  5. package/_cjs/collection/immutable/Conc/definition.cjs +80 -50
  6. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  7. package/_cjs/collection/immutable/HashMap/definition.cjs +13 -6
  8. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  9. package/_cjs/collection/immutable/HashMap/internal.cjs +18 -7
  10. package/_cjs/collection/immutable/HashMap/internal.cjs.map +1 -1
  11. package/_cjs/collection/immutable/HashSet/api.cjs +6 -7
  12. package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
  13. package/_cjs/collection/immutable/HashSet/definition.cjs +27 -10
  14. package/_cjs/collection/immutable/HashSet/definition.cjs.map +1 -1
  15. package/_cjs/collection/immutable/List/definition.cjs +25 -26
  16. package/_cjs/collection/immutable/List/definition.cjs.map +1 -1
  17. package/_cjs/collection/immutable/Queue/definition.cjs +2 -0
  18. package/_cjs/collection/immutable/Queue/definition.cjs.map +1 -1
  19. package/_cjs/collection/immutable/RoseTree/definition.cjs +5 -4
  20. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
  21. package/_cjs/collection/immutable/SortedMap/definition.cjs +4 -3
  22. package/_cjs/collection/immutable/SortedMap/definition.cjs.map +1 -1
  23. package/_cjs/collection/immutable/SortedMap/iterator.cjs +4 -1
  24. package/_cjs/collection/immutable/SortedMap/iterator.cjs.map +1 -1
  25. package/_cjs/collection/immutable/SortedMap/node.cjs +6 -0
  26. package/_cjs/collection/immutable/SortedMap/node.cjs.map +1 -1
  27. package/_cjs/collection/immutable/Vector/api.cjs +1 -0
  28. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  29. package/_cjs/collection/immutable/Vector/definition.cjs +25 -8
  30. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  31. package/_cjs/collection/immutable/Vector/internal.cjs +18 -4
  32. package/_cjs/collection/immutable/Vector/internal.cjs.map +1 -1
  33. package/_cjs/collection/mutable/ArrayDeque.cjs +3 -0
  34. package/_cjs/collection/mutable/ArrayDeque.cjs.map +1 -1
  35. package/_cjs/collection/mutable/HashMap.cjs +16 -3
  36. package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
  37. package/_cjs/collection/mutable/HashSet.cjs +15 -3
  38. package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
  39. package/_cjs/collection/mutable/ListBuffer.cjs +3 -5
  40. package/_cjs/collection/mutable/ListBuffer.cjs.map +1 -1
  41. package/_cjs/collection/weak/IterableWeakMap.cjs +3 -3
  42. package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
  43. package/_cjs/collection/weak/IterableWeakSet.cjs +3 -3
  44. package/_cjs/collection/weak/IterableWeakSet.cjs.map +1 -1
  45. package/_cjs/control/Eval/api.cjs +2 -0
  46. package/_cjs/control/Eval/api.cjs.map +1 -1
  47. package/_cjs/control/Eval/constructors.cjs +1 -0
  48. package/_cjs/control/Eval/constructors.cjs.map +1 -1
  49. package/_cjs/control/Eval/definition.cjs +4 -5
  50. package/_cjs/control/Eval/definition.cjs.map +1 -1
  51. package/_cjs/control/LazyValue.cjs +1 -0
  52. package/_cjs/control/LazyValue.cjs.map +1 -1
  53. package/_cjs/control/Pure/definition.cjs +10 -14
  54. package/_cjs/control/Pure/definition.cjs.map +1 -1
  55. package/_cjs/control/Pure/runtime.cjs +5 -2
  56. package/_cjs/control/Pure/runtime.cjs.map +1 -1
  57. package/_cjs/data/Branded/definition.cjs +7 -0
  58. package/_cjs/data/Branded/definition.cjs.map +1 -1
  59. package/_cjs/data/CaseClass.cjs +5 -14
  60. package/_cjs/data/CaseClass.cjs.map +1 -1
  61. package/_cjs/data/Cause/api/fold.cjs +4 -7
  62. package/_cjs/data/Cause/api/fold.cjs.map +1 -1
  63. package/_cjs/data/Cause/api.cjs +72 -66
  64. package/_cjs/data/Cause/api.cjs.map +1 -1
  65. package/_cjs/data/Cause/definition.cjs +36 -24
  66. package/_cjs/data/Cause/definition.cjs.map +1 -1
  67. package/_cjs/data/Const/definition.cjs +3 -0
  68. package/_cjs/data/Const/definition.cjs.map +1 -1
  69. package/_cjs/data/Data.cjs +6 -19
  70. package/_cjs/data/Data.cjs.map +1 -1
  71. package/_cjs/data/Datum/api.cjs.map +1 -1
  72. package/_cjs/data/Datum/definition.cjs +14 -17
  73. package/_cjs/data/Datum/definition.cjs.map +1 -1
  74. package/_cjs/data/Duration/definition.cjs +3 -3
  75. package/_cjs/data/Duration/definition.cjs.map +1 -1
  76. package/_cjs/data/Either/definition.cjs +10 -10
  77. package/_cjs/data/Either/definition.cjs.map +1 -1
  78. package/_cjs/data/EitherT/api.cjs +1 -1
  79. package/_cjs/data/EitherT/api.cjs.map +1 -1
  80. package/_cjs/data/Environment/ServiceNotFoundError.cjs +1 -0
  81. package/_cjs/data/Environment/ServiceNotFoundError.cjs.map +1 -1
  82. package/_cjs/data/Environment/definition.cjs +4 -3
  83. package/_cjs/data/Environment/definition.cjs.map +1 -1
  84. package/_cjs/data/EnvironmentPatch.cjs +13 -13
  85. package/_cjs/data/EnvironmentPatch.cjs.map +1 -1
  86. package/_cjs/data/Equatable/api.cjs +27 -3
  87. package/_cjs/data/Equatable/api.cjs.map +1 -1
  88. package/_cjs/data/Exit/definition.cjs +14 -11
  89. package/_cjs/data/Exit/definition.cjs.map +1 -1
  90. package/_cjs/data/FiberId/definition.cjs +13 -12
  91. package/_cjs/data/FiberId/definition.cjs.map +1 -1
  92. package/_cjs/data/Guard/definition.cjs +3 -4
  93. package/_cjs/data/Guard/definition.cjs.map +1 -1
  94. package/_cjs/data/Interval.cjs +2 -0
  95. package/_cjs/data/Interval.cjs.map +1 -1
  96. package/_cjs/data/Intervals.cjs +1 -0
  97. package/_cjs/data/Intervals.cjs.map +1 -1
  98. package/_cjs/data/Maybe/api.cjs +4 -4
  99. package/_cjs/data/Maybe/api.cjs.map +1 -1
  100. package/_cjs/data/Maybe/constructors.cjs +1 -3
  101. package/_cjs/data/Maybe/constructors.cjs.map +1 -1
  102. package/_cjs/data/Maybe/definition.cjs +15 -17
  103. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  104. package/_cjs/data/Showable/show.cjs +1 -1
  105. package/_cjs/data/Showable/show.cjs.map +1 -1
  106. package/_cjs/data/Tag/definition.cjs +7 -7
  107. package/_cjs/data/Tag/definition.cjs.map +1 -1
  108. package/_cjs/data/These/definition.cjs +12 -12
  109. package/_cjs/data/These/definition.cjs.map +1 -1
  110. package/_cjs/data/Trace/definition.cjs +2 -0
  111. package/_cjs/data/Trace/definition.cjs.map +1 -1
  112. package/_cjs/data/exceptions/ArrayIndexOutOfBoundsError.cjs +1 -1
  113. package/_cjs/data/exceptions/ArrayIndexOutOfBoundsError.cjs.map +1 -1
  114. package/_cjs/data/exceptions/IOError.cjs +2 -3
  115. package/_cjs/data/exceptions/IOError.cjs.map +1 -1
  116. package/_cjs/data/exceptions/IllegalArgumentError.cjs +2 -1
  117. package/_cjs/data/exceptions/IllegalArgumentError.cjs.map +1 -1
  118. package/_cjs/data/exceptions/IllegalStateError.cjs +1 -1
  119. package/_cjs/data/exceptions/IllegalStateError.cjs.map +1 -1
  120. package/_cjs/data/exceptions/IndexOutOfBoundsError.cjs +1 -1
  121. package/_cjs/data/exceptions/IndexOutOfBoundsError.cjs.map +1 -1
  122. package/_cjs/data/exceptions/InterruptedException.cjs +2 -3
  123. package/_cjs/data/exceptions/InterruptedException.cjs.map +1 -1
  124. package/_cjs/data/exceptions/InvalidCapacityError.cjs +1 -1
  125. package/_cjs/data/exceptions/InvalidCapacityError.cjs.map +1 -1
  126. package/_cjs/data/exceptions/NoSuchElementError.cjs +1 -1
  127. package/_cjs/data/exceptions/NoSuchElementError.cjs.map +1 -1
  128. package/_cjs/internal/AtomicReference.cjs +2 -0
  129. package/_cjs/internal/AtomicReference.cjs.map +1 -1
  130. package/_cjs/internal/Stack.cjs +1 -0
  131. package/_cjs/internal/Stack.cjs.map +1 -1
  132. package/_cjs/util/PCGRandom.cjs +2 -0
  133. package/_cjs/util/PCGRandom.cjs.map +1 -1
  134. package/_cjs/util/assert.cjs +1 -0
  135. package/_cjs/util/assert.cjs.map +1 -1
  136. package/_cjs/util/rand/Random.cjs +5 -4
  137. package/_cjs/util/rand/Random.cjs.map +1 -1
  138. package/_cjs/util/rand/generator/MersenneTwister.cjs +2 -0
  139. package/_cjs/util/rand/generator/MersenneTwister.cjs.map +1 -1
  140. package/_mjs/collection/Iterable/api.mjs +5 -5
  141. package/_mjs/collection/Iterable/api.mjs.map +1 -1
  142. package/_mjs/collection/immutable/Conc/api.mjs +14 -7
  143. package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
  144. package/_mjs/collection/immutable/Conc/definition.mjs +80 -50
  145. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  146. package/_mjs/collection/immutable/HashMap/definition.mjs +13 -6
  147. package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
  148. package/_mjs/collection/immutable/HashMap/internal.mjs +18 -7
  149. package/_mjs/collection/immutable/HashMap/internal.mjs.map +1 -1
  150. package/_mjs/collection/immutable/HashSet/api.mjs +6 -7
  151. package/_mjs/collection/immutable/HashSet/api.mjs.map +1 -1
  152. package/_mjs/collection/immutable/HashSet/definition.mjs +27 -10
  153. package/_mjs/collection/immutable/HashSet/definition.mjs.map +1 -1
  154. package/_mjs/collection/immutable/List/definition.mjs +24 -24
  155. package/_mjs/collection/immutable/List/definition.mjs.map +1 -1
  156. package/_mjs/collection/immutable/Queue/definition.mjs +2 -0
  157. package/_mjs/collection/immutable/Queue/definition.mjs.map +1 -1
  158. package/_mjs/collection/immutable/RoseTree/definition.mjs +5 -4
  159. package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -1
  160. package/_mjs/collection/immutable/SortedMap/definition.mjs +4 -3
  161. package/_mjs/collection/immutable/SortedMap/definition.mjs.map +1 -1
  162. package/_mjs/collection/immutable/SortedMap/iterator.mjs +4 -1
  163. package/_mjs/collection/immutable/SortedMap/iterator.mjs.map +1 -1
  164. package/_mjs/collection/immutable/SortedMap/node.mjs +6 -0
  165. package/_mjs/collection/immutable/SortedMap/node.mjs.map +1 -1
  166. package/_mjs/collection/immutable/Vector/api.mjs +1 -0
  167. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  168. package/_mjs/collection/immutable/Vector/definition.mjs +25 -8
  169. package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
  170. package/_mjs/collection/immutable/Vector/internal.mjs +18 -4
  171. package/_mjs/collection/immutable/Vector/internal.mjs.map +1 -1
  172. package/_mjs/collection/mutable/ArrayDeque.mjs +3 -0
  173. package/_mjs/collection/mutable/ArrayDeque.mjs.map +1 -1
  174. package/_mjs/collection/mutable/HashMap.mjs +16 -3
  175. package/_mjs/collection/mutable/HashMap.mjs.map +1 -1
  176. package/_mjs/collection/mutable/HashSet.mjs +15 -3
  177. package/_mjs/collection/mutable/HashSet.mjs.map +1 -1
  178. package/_mjs/collection/mutable/ListBuffer.mjs +3 -5
  179. package/_mjs/collection/mutable/ListBuffer.mjs.map +1 -1
  180. package/_mjs/collection/weak/IterableWeakMap.mjs +3 -3
  181. package/_mjs/collection/weak/IterableWeakMap.mjs.map +1 -1
  182. package/_mjs/collection/weak/IterableWeakSet.mjs +3 -3
  183. package/_mjs/collection/weak/IterableWeakSet.mjs.map +1 -1
  184. package/_mjs/control/Eval/api.mjs +2 -0
  185. package/_mjs/control/Eval/api.mjs.map +1 -1
  186. package/_mjs/control/Eval/constructors.mjs +1 -0
  187. package/_mjs/control/Eval/constructors.mjs.map +1 -1
  188. package/_mjs/control/Eval/definition.mjs +4 -5
  189. package/_mjs/control/Eval/definition.mjs.map +1 -1
  190. package/_mjs/control/LazyValue.mjs +1 -0
  191. package/_mjs/control/LazyValue.mjs.map +1 -1
  192. package/_mjs/control/Pure/definition.mjs +8 -12
  193. package/_mjs/control/Pure/definition.mjs.map +1 -1
  194. package/_mjs/control/Pure/runtime.mjs +5 -2
  195. package/_mjs/control/Pure/runtime.mjs.map +1 -1
  196. package/_mjs/data/Branded/definition.mjs +6 -0
  197. package/_mjs/data/Branded/definition.mjs.map +1 -1
  198. package/_mjs/data/CaseClass.mjs +5 -14
  199. package/_mjs/data/CaseClass.mjs.map +1 -1
  200. package/_mjs/data/Cause/api/fold.mjs +4 -7
  201. package/_mjs/data/Cause/api/fold.mjs.map +1 -1
  202. package/_mjs/data/Cause/api.mjs +72 -66
  203. package/_mjs/data/Cause/api.mjs.map +1 -1
  204. package/_mjs/data/Cause/definition.mjs +36 -24
  205. package/_mjs/data/Cause/definition.mjs.map +1 -1
  206. package/_mjs/data/Const/definition.mjs +3 -0
  207. package/_mjs/data/Const/definition.mjs.map +1 -1
  208. package/_mjs/data/Data.mjs +6 -19
  209. package/_mjs/data/Data.mjs.map +1 -1
  210. package/_mjs/data/Datum/api.mjs.map +1 -1
  211. package/_mjs/data/Datum/definition.mjs +14 -17
  212. package/_mjs/data/Datum/definition.mjs.map +1 -1
  213. package/_mjs/data/Duration/definition.mjs +3 -3
  214. package/_mjs/data/Duration/definition.mjs.map +1 -1
  215. package/_mjs/data/Either/definition.mjs +10 -10
  216. package/_mjs/data/Either/definition.mjs.map +1 -1
  217. package/_mjs/data/EitherT/api.mjs +1 -1
  218. package/_mjs/data/EitherT/api.mjs.map +1 -1
  219. package/_mjs/data/Environment/ServiceNotFoundError.mjs +1 -0
  220. package/_mjs/data/Environment/ServiceNotFoundError.mjs.map +1 -1
  221. package/_mjs/data/Environment/definition.mjs +4 -3
  222. package/_mjs/data/Environment/definition.mjs.map +1 -1
  223. package/_mjs/data/EnvironmentPatch.mjs +13 -13
  224. package/_mjs/data/EnvironmentPatch.mjs.map +1 -1
  225. package/_mjs/data/Equatable/api.mjs +26 -2
  226. package/_mjs/data/Equatable/api.mjs.map +1 -1
  227. package/_mjs/data/Exit/definition.mjs +14 -11
  228. package/_mjs/data/Exit/definition.mjs.map +1 -1
  229. package/_mjs/data/FiberId/definition.mjs +13 -12
  230. package/_mjs/data/FiberId/definition.mjs.map +1 -1
  231. package/_mjs/data/Guard/definition.mjs +2 -3
  232. package/_mjs/data/Guard/definition.mjs.map +1 -1
  233. package/_mjs/data/Interval.mjs +2 -0
  234. package/_mjs/data/Interval.mjs.map +1 -1
  235. package/_mjs/data/Intervals.mjs +1 -0
  236. package/_mjs/data/Intervals.mjs.map +1 -1
  237. package/_mjs/data/Maybe/api.mjs +4 -4
  238. package/_mjs/data/Maybe/api.mjs.map +1 -1
  239. package/_mjs/data/Maybe/constructors.mjs +1 -3
  240. package/_mjs/data/Maybe/constructors.mjs.map +1 -1
  241. package/_mjs/data/Maybe/definition.mjs +14 -16
  242. package/_mjs/data/Maybe/definition.mjs.map +1 -1
  243. package/_mjs/data/Showable/show.mjs +1 -1
  244. package/_mjs/data/Showable/show.mjs.map +1 -1
  245. package/_mjs/data/Tag/definition.mjs +7 -7
  246. package/_mjs/data/Tag/definition.mjs.map +1 -1
  247. package/_mjs/data/These/definition.mjs +10 -10
  248. package/_mjs/data/These/definition.mjs.map +1 -1
  249. package/_mjs/data/Trace/definition.mjs +2 -0
  250. package/_mjs/data/Trace/definition.mjs.map +1 -1
  251. package/_mjs/data/exceptions/ArrayIndexOutOfBoundsError.mjs +1 -1
  252. package/_mjs/data/exceptions/ArrayIndexOutOfBoundsError.mjs.map +1 -1
  253. package/_mjs/data/exceptions/IOError.mjs +2 -3
  254. package/_mjs/data/exceptions/IOError.mjs.map +1 -1
  255. package/_mjs/data/exceptions/IllegalArgumentError.mjs +2 -1
  256. package/_mjs/data/exceptions/IllegalArgumentError.mjs.map +1 -1
  257. package/_mjs/data/exceptions/IllegalStateError.mjs +1 -1
  258. package/_mjs/data/exceptions/IllegalStateError.mjs.map +1 -1
  259. package/_mjs/data/exceptions/IndexOutOfBoundsError.mjs +1 -1
  260. package/_mjs/data/exceptions/IndexOutOfBoundsError.mjs.map +1 -1
  261. package/_mjs/data/exceptions/InterruptedException.mjs +2 -3
  262. package/_mjs/data/exceptions/InterruptedException.mjs.map +1 -1
  263. package/_mjs/data/exceptions/InvalidCapacityError.mjs +1 -1
  264. package/_mjs/data/exceptions/InvalidCapacityError.mjs.map +1 -1
  265. package/_mjs/data/exceptions/NoSuchElementError.mjs +1 -1
  266. package/_mjs/data/exceptions/NoSuchElementError.mjs.map +1 -1
  267. package/_mjs/internal/AtomicReference.mjs +2 -0
  268. package/_mjs/internal/AtomicReference.mjs.map +1 -1
  269. package/_mjs/internal/Stack.mjs +1 -0
  270. package/_mjs/internal/Stack.mjs.map +1 -1
  271. package/_mjs/util/PCGRandom.mjs +2 -0
  272. package/_mjs/util/PCGRandom.mjs.map +1 -1
  273. package/_mjs/util/assert.mjs +1 -0
  274. package/_mjs/util/assert.mjs.map +1 -1
  275. package/_mjs/util/rand/Random.mjs +5 -4
  276. package/_mjs/util/rand/Random.mjs.map +1 -1
  277. package/_mjs/util/rand/generator/MersenneTwister.mjs +2 -0
  278. package/_mjs/util/rand/generator/MersenneTwister.mjs.map +1 -1
  279. package/_src/collection/Iterable/api.ts +0 -1
  280. package/_src/collection/immutable/Conc/definition.ts +12 -5
  281. package/_src/collection/immutable/HashMap/definition.ts +4 -1
  282. package/_src/collection/immutable/HashSet/api.ts +2 -3
  283. package/_src/collection/immutable/List/definition.ts +24 -2
  284. package/_src/collection/immutable/Vector/api.ts +4 -6
  285. package/_src/collection/immutable/Vector/definition.ts +14 -3
  286. package/_src/collection/immutable/Vector/internal.ts +14 -8
  287. package/_src/collection/weak/IterableWeakMap.ts +4 -4
  288. package/_src/collection/weak/IterableWeakSet.ts +4 -4
  289. package/_src/control/Eval/constructors.ts +1 -0
  290. package/_src/data/Branded/definition.ts +6 -1
  291. package/_src/data/CaseClass.ts +0 -1
  292. package/_src/data/Cause/api.ts +8 -16
  293. package/_src/data/Data.ts +0 -1
  294. package/_src/data/Datum/api.ts +0 -2
  295. package/_src/data/EitherT/api.ts +0 -1
  296. package/_src/data/Equatable/api.ts +29 -2
  297. package/_src/data/Maybe/api.ts +0 -1
  298. package/_src/data/Maybe/definition.ts +6 -4
  299. package/_src/data/Showable/show.ts +1 -1
  300. package/_src/util/PCGRandom.ts +1 -0
  301. package/collection/immutable/Conc/definition.d.ts +5 -5
  302. package/collection/immutable/List/definition.d.ts +12 -2
  303. package/collection/immutable/Vector/definition.d.ts +8 -3
  304. package/collection/weak/IterableWeakMap.d.ts +4 -4
  305. package/collection/weak/IterableWeakSet.d.ts +4 -4
  306. package/data/Branded/definition.d.ts +4 -1
  307. package/data/Equatable/api.d.ts +10 -0
  308. package/data/Equatable/fast-equals.d.ts +1 -1
  309. package/data/Maybe/definition.d.ts +4 -3
  310. package/package.json +3 -3
@@ -7,9 +7,29 @@ import {
7
7
  sameValueZeroEqual,
8
8
  } from "@fncts/base/data/Equatable/fast-equals";
9
9
 
10
+ /**
11
+ * @tsplus static fncts.EquatableOps anything
12
+ */
13
+ export const anything: any = Symbol.for("fncts.Equatable.anything");
14
+
15
+ /**
16
+ * @tsplus static fncts.EquatableOps nothing
17
+ */
18
+ export const nothing: any = Symbol.for("fncts.Equatable.nothing");
19
+
10
20
  const deepEqualsComparator = createComparator(
11
21
  createCircularEqualCreator((eq) => (a, b, meta) => {
12
- const equalsContext: EqualsContext = { comparator: deepEquals };
22
+ const equalsContext: EqualsContext = {
23
+ comparator: (a, b) => {
24
+ if (a === anything || b === anything) {
25
+ return true;
26
+ } else if (a === nothing || b === nothing) {
27
+ return false;
28
+ }
29
+ return deepEquals(a, b);
30
+ },
31
+ };
32
+
13
33
  if (isEquatable(a)) {
14
34
  return a[Symbol.equals](b, equalsContext);
15
35
  } else if (isEquatable(b)) {
@@ -40,7 +60,14 @@ export function deepEquals<A>(a: A, b: unknown): boolean {
40
60
  */
41
61
  export function strictEquals<A>(a: A, b: unknown): boolean {
42
62
  const context: EqualsContext = {
43
- comparator: strictEquals,
63
+ comparator: (a, b) => {
64
+ if (a === anything || b === anything) {
65
+ return true;
66
+ } else if (a === nothing || b === nothing) {
67
+ return false;
68
+ }
69
+ return strictEquals(a, b);
70
+ },
44
71
  };
45
72
  if (isEquatable(a)) {
46
73
  return a[Symbol.equals](b, context);
@@ -154,7 +154,6 @@ export function orElse<B>(fb: Lazy<Maybe<B>>) {
154
154
  */
155
155
  export function partition<A>(p: Predicate<A>): (self: Maybe<A>) => readonly [Maybe<A>, Maybe<A>];
156
156
  export function partition<A, B extends A>(p: Refinement<A, B>): (self: Maybe<A>) => readonly [Maybe<A>, Maybe<B>];
157
-
158
157
  export function partition<A>(p: Predicate<A>) {
159
158
  return (self: Maybe<A>): readonly [Maybe<A>, Maybe<A>] => {
160
159
  self.concrete();
@@ -1,3 +1,5 @@
1
+ import type { EqualsContext } from "../Equatable.js";
2
+
1
3
  import { isObject } from "../../util/predicates.js";
2
4
 
3
5
  export const enum MaybeTag {
@@ -42,7 +44,7 @@ export abstract class Maybe<A> {
42
44
  * @tsplus type fncts.Just
43
45
  * @tsplus companion fncts.JustOps
44
46
  */
45
- export class Just<A> extends Maybe<A> {
47
+ export class Just<A> extends Maybe<A> implements Equatable {
46
48
  readonly _tag = MaybeTag.Just;
47
49
  constructor(
48
50
  readonly value: A,
@@ -50,8 +52,8 @@ export class Just<A> extends Maybe<A> {
50
52
  ) {
51
53
  super();
52
54
  }
53
- [Symbol.equals](that: unknown): boolean {
54
- return isMaybe(that) && that.isJust() && Equatable.strictEquals(this.value, that.value);
55
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean {
56
+ return isMaybe(that) && that.isJust() && context.comparator(this.value, that.value);
55
57
  }
56
58
  get [Symbol.hash]() {
57
59
  return Hashable.combine(_justHash, Hashable.unknown(this.value));
@@ -62,7 +64,7 @@ export class Just<A> extends Maybe<A> {
62
64
  * @tsplus type fncts.Nothing
63
65
  * @tsplus companion fncts.NothingOps
64
66
  */
65
- export class Nothing extends Maybe<never> {
67
+ export class Nothing extends Maybe<never> implements Equatable {
66
68
  readonly _tag = MaybeTag.Nothing;
67
69
  constructor(readonly trace?: string) {
68
70
  super();
@@ -721,7 +721,7 @@ export function showProperty(
721
721
  Pure.update((_: ShowContext): ShowContext => _.copy({ indentationLevel: _.indentationLevel - diff })),
722
722
  );
723
723
  } else if (isDefined(descriptor.get)) {
724
- return Pure.succeedNow(tuple(descriptor, " ", `[${descriptor.set ? "Getter/Settter" : "Getter"}]`));
724
+ return Pure.succeedNow(tuple(descriptor, " ", `[${descriptor.set ? "Getter/Setter" : "Getter"}]`));
725
725
  } else if (isDefined(descriptor.set)) {
726
726
  return Pure.succeedNow(tuple(descriptor, " ", "Setter"));
727
727
  } else {
@@ -132,6 +132,7 @@ export class PCGRandom {
132
132
  return this._next() & (max - 1); // fast path for power of 2
133
133
  }
134
134
 
135
+ // eslint-disable-next-line no-useless-assignment
135
136
  let num = 0;
136
137
  const skew = (-max >>> 0) % max >>> 0;
137
138
  for (num = this._next(); num < skew; num = this._next()) {
@@ -90,9 +90,9 @@ export declare class Concat<A> extends ConcImplementation<A> {
90
90
  readonly right: ConcImplementation<A>;
91
91
  _A: () => A;
92
92
  readonly _tag = ConcTag.Concat;
93
- length: number;
94
- depth: number;
95
- binary: boolean;
93
+ readonly length: number;
94
+ readonly depth: number;
95
+ readonly binary: boolean;
96
96
  constructor(left: ConcImplementation<A>, right: ConcImplementation<A>);
97
97
  get(n: number): A;
98
98
  forEach<B>(startIndex: number, f: (i: number, a: A) => B): void;
@@ -107,8 +107,8 @@ declare class AppendN<A> extends ConcImplementation<A> {
107
107
  readonly bufferUsed: number;
108
108
  readonly binary: boolean;
109
109
  readonly _tag = ConcTag.AppendN;
110
- length: number;
111
- depth: number;
110
+ readonly length: number;
111
+ readonly depth: number;
112
112
  left: Empty<never>;
113
113
  right: Empty<never>;
114
114
  constructor(start: ConcImplementation<A>, buffer: Array<unknown> | Uint8Array, bufferUsed: number, binary: boolean);
@@ -1,24 +1,34 @@
1
+ import { Equatable } from "@fncts/base/data/Equatable";
2
+ import type { EqualsContext } from "@fncts/base/data/Equatable";
1
3
  export declare const ListTypeId: unique symbol;
2
4
  export type ListTypeId = typeof ListTypeId;
3
5
  /**
4
6
  * @tsplus type fncts.List.Cons
5
7
  * @tsplus companion fncts.ConsOps
6
8
  */
7
- export declare class Cons<A> implements Iterable<A> {
9
+ export declare class Cons<A> implements Iterable<A>, Equatable {
8
10
  readonly head: A;
9
11
  tail: List<A>;
10
12
  readonly _tag = "Cons";
11
13
  readonly [ListTypeId]: ListTypeId;
12
14
  constructor(head: A, tail?: List<A>);
15
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean;
16
+ /**
17
+ * Iterates elements from this node through the tail.
18
+ */
13
19
  [Symbol.iterator](): Iterator<A>;
14
20
  }
15
21
  /**
16
22
  * @tsplus type fncts.List.Nil
17
23
  * @tsplus companion fncts.NilOps
18
24
  */
19
- export declare class Nil<A> implements Iterable<A> {
25
+ export declare class Nil<A> implements Iterable<A>, Equatable {
20
26
  readonly _tag = "Nil";
21
27
  readonly [ListTypeId]: ListTypeId;
28
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean;
29
+ /**
30
+ * Returns an iterator that is immediately done.
31
+ */
22
32
  [Symbol.iterator](): Iterator<A>;
23
33
  }
24
34
  /**
@@ -1,7 +1,10 @@
1
1
  import { HKT } from "@fncts/typelevel/HKT";
2
- import { Hashable } from "@fncts/base/data/Hashable";
3
2
  import { Equatable } from "@fncts/base/data/Equatable";
3
+ import { Hashable } from "@fncts/base/data/Hashable";
4
+ import { Pure } from "@fncts/base/control/Pure/definition";
4
5
  import type { Node } from "@fncts/base/collection/immutable/Vector/internal";
6
+ import type { EqualsContext } from "@fncts/base/data/Equatable";
7
+ import type { ShowComputationExternal } from "@fncts/base/data/Showable";
5
8
  export declare const VectorVariance: unique symbol;
6
9
  export type VectorVariance = typeof VectorVariance;
7
10
  export declare const VectorTypeId: unique symbol;
@@ -19,7 +22,7 @@ export interface VectorF extends HKT {
19
22
  * @tsplus type fncts.Vector
20
23
  * @tsplus companion fncts.VectorOps
21
24
  */
22
- export declare class Vector<A> implements Iterable<A> {
25
+ export declare class Vector<A> implements Iterable<A>, Equatable {
23
26
  /** @private */
24
27
  readonly bits: number;
25
28
  /** @private */
@@ -48,7 +51,8 @@ export declare class Vector<A> implements Iterable<A> {
48
51
  suffix: A[]);
49
52
  [Symbol.iterator](): Iterator<A>;
50
53
  get [Symbol.hash](): number;
51
- [Symbol.equals](that: unknown): boolean;
54
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean;
55
+ get [Symbol.showable](): ShowComputationExternal;
52
56
  }
53
57
  /**
54
58
  * @tsplus type fncts.Vector
@@ -68,6 +72,7 @@ export interface MutableVector<A> {
68
72
  [Symbol.iterator]: () => Iterator<A>;
69
73
  [Symbol.hash]: number;
70
74
  [Symbol.equals](that: unknown): boolean;
75
+ get [Symbol.showable](): ShowComputationExternal;
71
76
  /**
72
77
  * This property doesn't exist at run-time. It exists to prevent a
73
78
  * MutableVector from being assignable to a Vector.
@@ -14,9 +14,9 @@ export declare class IterableWeakMap<K extends object, V> implements Iterable<re
14
14
  clear(): void;
15
15
  forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: IterableWeakMap<K, V>): void;
16
16
  get size(): number;
17
- [Symbol.iterator](this: this): IterableIterator<[K, V]>;
17
+ [Symbol.iterator](this: this): MapIterator<[K, V]>;
18
18
  get [Symbol.toStringTag](): string;
19
- entries(this: this): IterableIterator<[K, V]>;
20
- keys(this: this): IterableIterator<K>;
21
- values(): IterableIterator<V>;
19
+ entries(this: this): MapIterator<[K, V]>;
20
+ keys(this: this): MapIterator<K>;
21
+ values(): MapIterator<V>;
22
22
  }
@@ -10,12 +10,12 @@ export declare class IterableWeakSet<A extends object> implements Iterable<A>, S
10
10
  add(this: this, value: A): this;
11
11
  delete(this: this, value: A): boolean;
12
12
  has(this: this, value: A): boolean;
13
- keys(): IterableIterator<A>;
14
- values(): IterableIterator<A>;
13
+ keys(): MapIterator<A>;
14
+ values(): MapIterator<A>;
15
15
  forEach(f: (value: A, value2: A, set: Set<A>) => void, thisArg?: Set<A>): void;
16
16
  clear(): void;
17
17
  get size(): number;
18
- [Symbol.iterator](this: this): IterableIterator<A>;
18
+ [Symbol.iterator](this: this): MapIterator<A>;
19
19
  get [Symbol.toStringTag](): string;
20
- entries(this: this): IterableIterator<[A, A]>;
20
+ entries(this: this): MapIterator<[A, A]>;
21
21
  }
@@ -1,5 +1,7 @@
1
+ import { Equatable } from "@fncts/base/data/Equatable";
1
2
  import { Refinement } from "@fncts/base/data/Refinement/definition";
2
3
  import { Predicate } from "@fncts/base/data/Predicate/definition";
4
+ import type { EqualsContext } from "@fncts/base/data/Equatable";
3
5
  import type { Union } from "@fncts/typelevel";
4
6
  declare const validSym: unique symbol;
5
7
  export declare namespace Brand {
@@ -27,10 +29,11 @@ export declare namespace Brand {
27
29
  * @tsplus companion fncts.ValidationOps
28
30
  * @tsplus derive nominal
29
31
  */
30
- export declare class Validation<in out A, in out K extends string> {
32
+ export declare class Validation<in out A, in out K extends string> implements Equatable {
31
33
  readonly validate: Refinement<A, A & Brand.Valid<A, K>>;
32
34
  readonly name: K;
33
35
  constructor(validate: Refinement<A, A & Brand.Valid<A, K>>, name: K);
36
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean;
34
37
  }
35
38
  /**
36
39
  * @tsplus static fncts.ValidationOps __call
@@ -1,3 +1,13 @@
1
+ /**
2
+ * @tsplus static fncts.EquatableOps anything
3
+ * @tsplus location "@fncts/base/data/Equatable/api"
4
+ */
5
+ export declare const anything: any;
6
+ /**
7
+ * @tsplus static fncts.EquatableOps nothing
8
+ * @tsplus location "@fncts/base/data/Equatable/api"
9
+ */
10
+ export declare const nothing: any;
1
11
  /**
2
12
  * @tsplus static fncts.EquatableOps deepEquals
3
13
  * @tsplus location "@fncts/base/data/Equatable/api"
@@ -99,7 +99,7 @@ export declare function getNewCacheFallback(): Cache;
99
99
  *
100
100
  * @returns the new cache object
101
101
  */
102
- export declare const getNewCache: () => Cache;
102
+ export declare const getNewCache: typeof getNewCacheFallback;
103
103
  /**
104
104
  * @function createCircularEqualCreator
105
105
  *
@@ -1,6 +1,7 @@
1
1
  import { HKT } from "@fncts/typelevel/HKT";
2
2
  import { Equatable } from "@fncts/base/data/Equatable";
3
3
  import { Hashable } from "@fncts/base/data/Hashable";
4
+ import type { EqualsContext } from "../Equatable.js";
4
5
  export declare const enum MaybeTag {
5
6
  Just = "Just",
6
7
  Nothing = "Nothing"
@@ -34,19 +35,19 @@ export declare abstract class Maybe<A> {
34
35
  * @tsplus type fncts.Just
35
36
  * @tsplus companion fncts.JustOps
36
37
  */
37
- export declare class Just<A> extends Maybe<A> {
38
+ export declare class Just<A> extends Maybe<A> implements Equatable {
38
39
  readonly value: A;
39
40
  readonly trace?: string | undefined;
40
41
  readonly _tag = MaybeTag.Just;
41
42
  constructor(value: A, trace?: string | undefined);
42
- [Symbol.equals](that: unknown): boolean;
43
+ [Symbol.equals](that: unknown, context: EqualsContext): boolean;
43
44
  get [Symbol.hash](): number;
44
45
  }
45
46
  /**
46
47
  * @tsplus type fncts.Nothing
47
48
  * @tsplus companion fncts.NothingOps
48
49
  */
49
- export declare class Nothing extends Maybe<never> {
50
+ export declare class Nothing extends Maybe<never> implements Equatable {
50
51
  readonly trace?: string | undefined;
51
52
  readonly _tag = MaybeTag.Nothing;
52
53
  constructor(trace?: string | undefined);
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@fncts/base",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "dependencies": {
5
- "@fncts/typelevel": "0.0.22",
6
- "uuid": "^11.1.0"
5
+ "@fncts/typelevel": "0.0.24",
6
+ "uuid": "^14.0.0"
7
7
  },
8
8
  "exports": {
9
9
  "./*": {