@fncts/base 0.0.39 → 0.0.41

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 (722) hide show
  1. package/_cjs/collection/AsyncIterable/api.cjs +384 -0
  2. package/_cjs/collection/AsyncIterable/api.cjs.map +1 -0
  3. package/_cjs/collection/AsyncIterable/definition.cjs +2 -0
  4. package/_cjs/collection/AsyncIterable/definition.cjs.map +1 -0
  5. package/_cjs/collection/{compat/Array.cjs → AsyncIterable.cjs} +3 -3
  6. package/_cjs/collection/AsyncIterable.cjs.map +1 -0
  7. package/_cjs/collection/Iterable/api/traverseConc.cjs +1 -2
  8. package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
  9. package/_cjs/collection/Iterable/api.cjs +180 -137
  10. package/_cjs/collection/Iterable/api.cjs.map +1 -1
  11. package/_cjs/collection/Iterable/constructors.cjs.map +1 -1
  12. package/_cjs/collection/compat/ArrayLike/api.cjs +1 -2
  13. package/_cjs/collection/compat/ArrayLike/api.cjs.map +1 -1
  14. package/_cjs/collection/compat/ArrayLike/definition.cjs +0 -4
  15. package/_cjs/collection/compat/Map/definition.cjs +0 -4
  16. package/_cjs/collection/compat/Set/definition.cjs +0 -4
  17. package/_cjs/collection/compat.cjs +0 -4
  18. package/_cjs/collection/immutable/Conc/api/makeBy.cjs +1 -2
  19. package/_cjs/collection/immutable/Conc/api/makeBy.cjs.map +1 -1
  20. package/_cjs/collection/immutable/Conc/api/replicate.cjs +1 -2
  21. package/_cjs/collection/immutable/Conc/api/replicate.cjs.map +1 -1
  22. package/_cjs/collection/immutable/Conc/api.cjs +1 -2
  23. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  24. package/_cjs/collection/immutable/Conc/constructors.cjs +3 -4
  25. package/_cjs/collection/immutable/Conc/constructors.cjs.map +1 -1
  26. package/_cjs/collection/immutable/Conc/definition.cjs +3 -3
  27. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  28. package/_cjs/collection/immutable/Dictionary/api.cjs +1 -2
  29. package/_cjs/collection/immutable/Dictionary/api.cjs.map +1 -1
  30. package/_cjs/collection/immutable/Dictionary/definition.cjs +1 -2
  31. package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
  32. package/_cjs/collection/immutable/HashMap/api.cjs +1 -2
  33. package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
  34. package/_cjs/collection/immutable/HashMap/definition.cjs +1 -2
  35. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  36. package/_cjs/collection/immutable/HashMap/internal.cjs +1 -2
  37. package/_cjs/collection/immutable/HashMap/internal.cjs.map +1 -1
  38. package/_cjs/collection/immutable/HashSet/api.cjs +1 -2
  39. package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
  40. package/_cjs/collection/immutable/HashSet/definition.cjs +1 -2
  41. package/_cjs/collection/immutable/HashSet/definition.cjs.map +1 -1
  42. package/_cjs/collection/immutable/List/api/foldLeft.cjs +1 -2
  43. package/_cjs/collection/immutable/List/api/foldLeft.cjs.map +1 -1
  44. package/_cjs/collection/immutable/List/api/unsafeTail.cjs +1 -2
  45. package/_cjs/collection/immutable/List/api/unsafeTail.cjs.map +1 -1
  46. package/_cjs/collection/immutable/List/api.cjs +3 -4
  47. package/_cjs/collection/immutable/List/api.cjs.map +1 -1
  48. package/_cjs/collection/immutable/List/constructors.cjs +1 -2
  49. package/_cjs/collection/immutable/List/constructors.cjs.map +1 -1
  50. package/_cjs/collection/immutable/List/definition.cjs +1 -2
  51. package/_cjs/collection/immutable/List/definition.cjs.map +1 -1
  52. package/_cjs/collection/immutable/Queue/api.cjs +1 -2
  53. package/_cjs/collection/immutable/Queue/api.cjs.map +1 -1
  54. package/_cjs/collection/immutable/Queue/constructors.cjs +1 -2
  55. package/_cjs/collection/immutable/Queue/constructors.cjs.map +1 -1
  56. package/_cjs/collection/immutable/Queue/definition.cjs +1 -2
  57. package/_cjs/collection/immutable/Queue/definition.cjs.map +1 -1
  58. package/_cjs/collection/immutable/Queue/guards.cjs +1 -2
  59. package/_cjs/collection/immutable/Queue/guards.cjs.map +1 -1
  60. package/_cjs/collection/immutable/ReadonlyArray/api/chunksOf.cjs +18 -0
  61. package/_cjs/collection/immutable/ReadonlyArray/api/chunksOf.cjs.map +1 -0
  62. package/_cjs/collection/immutable/ReadonlyArray/api/splitAt.cjs +15 -0
  63. package/_cjs/collection/immutable/ReadonlyArray/api/splitAt.cjs.map +1 -0
  64. package/_cjs/collection/immutable/ReadonlyArray/api/splitWhere.cjs +26 -0
  65. package/_cjs/collection/immutable/ReadonlyArray/api/splitWhere.cjs.map +1 -0
  66. package/_cjs/collection/immutable/{ImmutableArray → ReadonlyArray}/api.cjs +562 -538
  67. package/_cjs/collection/immutable/ReadonlyArray/api.cjs.map +1 -0
  68. package/_cjs/collection/immutable/ReadonlyArray/constructors.cjs +55 -0
  69. package/_cjs/collection/immutable/ReadonlyArray/constructors.cjs.map +1 -0
  70. package/_cjs/collection/immutable/ReadonlyArray/definition.cjs.map +1 -0
  71. package/_cjs/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.cjs +5 -7
  72. package/_cjs/collection/immutable/ReadonlyArray/instances.cjs.map +1 -0
  73. package/_cjs/collection/immutable/{ImmutableArray.cjs → ReadonlyArray.cjs} +8 -19
  74. package/_cjs/collection/immutable/ReadonlyArray.cjs.map +1 -0
  75. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/api.cjs +472 -0
  76. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/api.cjs.map +1 -0
  77. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/constructors.cjs +79 -0
  78. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/constructors.cjs.map +1 -0
  79. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/definition.cjs +2 -0
  80. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/definition.cjs.map +1 -0
  81. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/destructors.cjs +49 -0
  82. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/destructors.cjs.map +1 -0
  83. package/_cjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.cjs +3 -4
  84. package/_cjs/collection/immutable/ReadonlyNonEmptyArray/instances.cjs.map +1 -0
  85. package/_cjs/collection/immutable/{ImmutableNonEmptyArray.cjs → ReadonlyNonEmptyArray.cjs} +6 -6
  86. package/_cjs/collection/immutable/ReadonlyNonEmptyArray.cjs.map +1 -0
  87. package/_cjs/collection/immutable/RoseTree/api.cjs +1 -2
  88. package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -1
  89. package/_cjs/collection/immutable/RoseTree/definition.cjs +1 -2
  90. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
  91. package/_cjs/collection/immutable/SortedMap/api.cjs +1 -2
  92. package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
  93. package/_cjs/collection/immutable/SortedMap/iterator.cjs +1 -2
  94. package/_cjs/collection/immutable/SortedMap/iterator.cjs.map +1 -1
  95. package/_cjs/collection/immutable/Vector/api.cjs +229 -230
  96. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  97. package/_cjs/collection/immutable/Vector/definition.cjs +1 -2
  98. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  99. package/_cjs/collection/immutable.cjs +0 -4
  100. package/_cjs/collection/internal.cjs +0 -4
  101. package/_cjs/collection/mutable/ArrayDeque.cjs +1 -2
  102. package/_cjs/collection/mutable/ArrayDeque.cjs.map +1 -1
  103. package/_cjs/collection/mutable/HashMap.cjs +1 -2
  104. package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
  105. package/_cjs/collection/mutable/HashSet.cjs +1 -2
  106. package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
  107. package/_cjs/collection/mutable/ListBuffer.cjs +1 -2
  108. package/_cjs/collection/mutable/ListBuffer.cjs.map +1 -1
  109. package/_cjs/collection/mutable.cjs +0 -4
  110. package/_cjs/collection/weak/IterableWeakMap.cjs +1 -2
  111. package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
  112. package/_cjs/collection/weak.cjs +0 -4
  113. package/_cjs/collection.cjs +0 -4
  114. package/_cjs/control/Eval/api.cjs +89 -41
  115. package/_cjs/control/Eval/api.cjs.map +1 -1
  116. package/_cjs/control/Eval/constructors.cjs +5 -1
  117. package/_cjs/control/Eval/constructors.cjs.map +1 -1
  118. package/_cjs/control/Eval/instance.cjs +1 -2
  119. package/_cjs/control/Eval/instance.cjs.map +1 -1
  120. package/_cjs/control/Eval/run.cjs +1 -2
  121. package/_cjs/control/Eval/run.cjs.map +1 -1
  122. package/_cjs/control/Pure/api.cjs +1 -2
  123. package/_cjs/control/Pure/api.cjs.map +1 -1
  124. package/_cjs/control/Pure/definition.cjs +1 -2
  125. package/_cjs/control/Pure/definition.cjs.map +1 -1
  126. package/_cjs/control/Pure/instances.cjs +1 -2
  127. package/_cjs/control/Pure/instances.cjs.map +1 -1
  128. package/_cjs/control/Pure/runtime.cjs +15 -10
  129. package/_cjs/control/Pure/runtime.cjs.map +1 -1
  130. package/_cjs/control.cjs +0 -4
  131. package/_cjs/data/Byte.cjs +0 -4
  132. package/_cjs/data/CaseClass.cjs +11 -14
  133. package/_cjs/data/CaseClass.cjs.map +1 -1
  134. package/_cjs/data/Cause/api/fold.cjs +33 -34
  135. package/_cjs/data/Cause/api/fold.cjs.map +1 -1
  136. package/_cjs/data/Cause/api/isEmpty.cjs +1 -2
  137. package/_cjs/data/Cause/api/isEmpty.cjs.map +1 -1
  138. package/_cjs/data/Cause/api/linearize.cjs +1 -2
  139. package/_cjs/data/Cause/api/linearize.cjs.map +1 -1
  140. package/_cjs/data/Cause/api/prettyPrint.cjs +1 -2
  141. package/_cjs/data/Cause/api/prettyPrint.cjs.map +1 -1
  142. package/_cjs/data/Cause/api/unified.cjs +1 -2
  143. package/_cjs/data/Cause/api/unified.cjs.map +1 -1
  144. package/_cjs/data/Cause/api.cjs +1 -2
  145. package/_cjs/data/Cause/api.cjs.map +1 -1
  146. package/_cjs/data/Cause/definition.cjs +1 -2
  147. package/_cjs/data/Cause/definition.cjs.map +1 -1
  148. package/_cjs/data/Const/api.cjs +7 -7
  149. package/_cjs/data/Const/api.cjs.map +1 -1
  150. package/_cjs/data/Const/instances.cjs +12 -13
  151. package/_cjs/data/Const/instances.cjs.map +1 -1
  152. package/_cjs/data/Data.cjs +1 -2
  153. package/_cjs/data/Data.cjs.map +1 -1
  154. package/_cjs/data/Date/definition.cjs +0 -4
  155. package/_cjs/data/Datum/api.cjs +110 -113
  156. package/_cjs/data/Datum/api.cjs.map +1 -1
  157. package/_cjs/data/Datum/definition.cjs +1 -2
  158. package/_cjs/data/Datum/definition.cjs.map +1 -1
  159. package/_cjs/data/Datum/instances.cjs +1 -2
  160. package/_cjs/data/Datum/instances.cjs.map +1 -1
  161. package/_cjs/data/Datum.cjs +39 -0
  162. package/_cjs/data/Datum.cjs.map +1 -0
  163. package/_cjs/data/DatumEither/api.cjs +56 -57
  164. package/_cjs/data/DatumEither/api.cjs.map +1 -1
  165. package/_cjs/data/Duration/api.cjs +1 -2
  166. package/_cjs/data/Duration/api.cjs.map +1 -1
  167. package/_cjs/data/Duration/definition.cjs +1 -2
  168. package/_cjs/data/Duration/definition.cjs.map +1 -1
  169. package/_cjs/data/Either/api/align.cjs +1 -2
  170. package/_cjs/data/Either/api/align.cjs.map +1 -1
  171. package/_cjs/data/Either/api/alignWith.cjs +1 -2
  172. package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
  173. package/_cjs/data/Either/api.cjs +53 -55
  174. package/_cjs/data/Either/api.cjs.map +1 -1
  175. package/_cjs/data/Either/constructors.cjs +21 -22
  176. package/_cjs/data/Either/constructors.cjs.map +1 -1
  177. package/_cjs/data/Either/definition.cjs +1 -2
  178. package/_cjs/data/Either/definition.cjs.map +1 -1
  179. package/_cjs/data/Either/instances.cjs +1 -2
  180. package/_cjs/data/Either/instances.cjs.map +1 -1
  181. package/_cjs/data/EitherT/api.cjs +28 -29
  182. package/_cjs/data/EitherT/api.cjs.map +1 -1
  183. package/_cjs/data/Environment/api.cjs +1 -2
  184. package/_cjs/data/Environment/api.cjs.map +1 -1
  185. package/_cjs/data/Environment/definition.cjs +1 -2
  186. package/_cjs/data/Environment/definition.cjs.map +1 -1
  187. package/_cjs/data/EnvironmentPatch.cjs +2 -3
  188. package/_cjs/data/EnvironmentPatch.cjs.map +1 -1
  189. package/_cjs/data/Eq/api.cjs +189 -5
  190. package/_cjs/data/Eq/api.cjs.map +1 -1
  191. package/_cjs/data/Eq/derivations.cjs +10 -21
  192. package/_cjs/data/Eq/derivations.cjs.map +1 -1
  193. package/_cjs/data/Equatable/api.cjs +1 -2
  194. package/_cjs/data/Equatable/api.cjs.map +1 -1
  195. package/_cjs/data/Equatable/definition.cjs +1 -2
  196. package/_cjs/data/Equatable/definition.cjs.map +1 -1
  197. package/_cjs/data/Exit/api.cjs +90 -80
  198. package/_cjs/data/Exit/api.cjs.map +1 -1
  199. package/_cjs/data/Exit/constructors.cjs +1 -2
  200. package/_cjs/data/Exit/constructors.cjs.map +1 -1
  201. package/_cjs/data/Exit/definition.cjs +1 -2
  202. package/_cjs/data/Exit/definition.cjs.map +1 -1
  203. package/_cjs/data/FiberId/api.cjs +1 -2
  204. package/_cjs/data/FiberId/api.cjs.map +1 -1
  205. package/_cjs/data/FiberId/definition.cjs +1 -2
  206. package/_cjs/data/FiberId/definition.cjs.map +1 -1
  207. package/_cjs/data/Guard/api.cjs +13 -17
  208. package/_cjs/data/Guard/api.cjs.map +1 -1
  209. package/_cjs/data/HashEq.cjs +1 -2
  210. package/_cjs/data/HashEq.cjs.map +1 -1
  211. package/_cjs/data/Hashable/definition.cjs +1 -2
  212. package/_cjs/data/Hashable/definition.cjs.map +1 -1
  213. package/_cjs/data/Hashable/hash.cjs +1 -2
  214. package/_cjs/data/Hashable/hash.cjs.map +1 -1
  215. package/_cjs/data/Identity/api.cjs +1 -2
  216. package/_cjs/data/Identity/api.cjs.map +1 -1
  217. package/_cjs/data/Identity/definition.cjs +1 -2
  218. package/_cjs/data/Identity/definition.cjs.map +1 -1
  219. package/_cjs/data/Identity/instances.cjs +1 -2
  220. package/_cjs/data/Identity/instances.cjs.map +1 -1
  221. package/_cjs/data/Interval.cjs +1 -2
  222. package/_cjs/data/Interval.cjs.map +1 -1
  223. package/_cjs/data/Intervals.cjs +1 -2
  224. package/_cjs/data/Intervals.cjs.map +1 -1
  225. package/_cjs/data/Maybe/api.cjs +73 -60
  226. package/_cjs/data/Maybe/api.cjs.map +1 -1
  227. package/_cjs/data/Maybe/constructors.cjs +37 -38
  228. package/_cjs/data/Maybe/constructors.cjs.map +1 -1
  229. package/_cjs/data/Maybe/definition.cjs +1 -2
  230. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  231. package/_cjs/data/Maybe/instances.cjs +1 -2
  232. package/_cjs/data/Maybe/instances.cjs.map +1 -1
  233. package/_cjs/data/Newtype.cjs +1 -2
  234. package/_cjs/data/Newtype.cjs.map +1 -1
  235. package/_cjs/data/Ord/api.cjs +1 -2
  236. package/_cjs/data/Ord/api.cjs.map +1 -1
  237. package/_cjs/data/Ord/definition.cjs +1 -2
  238. package/_cjs/data/Ord/definition.cjs.map +1 -1
  239. package/_cjs/data/Ord/instances.cjs +1 -2
  240. package/_cjs/data/Ord/instances.cjs.map +1 -1
  241. package/_cjs/data/Predicate/definition.cjs +0 -4
  242. package/_cjs/data/Predicate/match.cjs +0 -4
  243. package/_cjs/data/Refinement/definition.cjs +0 -4
  244. package/_cjs/data/Showable/definition.cjs +1 -2
  245. package/_cjs/data/Showable/definition.cjs.map +1 -1
  246. package/_cjs/data/Showable/show.cjs +1 -2
  247. package/_cjs/data/Showable/show.cjs.map +1 -1
  248. package/_cjs/data/Showable/styles.cjs +1 -2
  249. package/_cjs/data/Showable/styles.cjs.map +1 -1
  250. package/_cjs/data/Showable/util.cjs +1 -2
  251. package/_cjs/data/Showable/util.cjs.map +1 -1
  252. package/_cjs/data/Struct/api.cjs +5 -7
  253. package/_cjs/data/Struct/api.cjs.map +1 -1
  254. package/_cjs/data/Struct/definition.cjs +1 -2
  255. package/_cjs/data/Struct/definition.cjs.map +1 -1
  256. package/_cjs/data/Tag/constructors.cjs +1 -2
  257. package/_cjs/data/Tag/constructors.cjs.map +1 -1
  258. package/_cjs/data/Tag/definition.cjs +1 -2
  259. package/_cjs/data/Tag/definition.cjs.map +1 -1
  260. package/_cjs/data/These/api.cjs +86 -87
  261. package/_cjs/data/These/api.cjs.map +1 -1
  262. package/_cjs/data/These/constructors.cjs +1 -2
  263. package/_cjs/data/These/constructors.cjs.map +1 -1
  264. package/_cjs/data/These/definition.cjs +1 -2
  265. package/_cjs/data/These/definition.cjs.map +1 -1
  266. package/_cjs/data/These/destructors.cjs +1 -2
  267. package/_cjs/data/These/destructors.cjs.map +1 -1
  268. package/_cjs/data/These/instances.cjs +1 -2
  269. package/_cjs/data/These/instances.cjs.map +1 -1
  270. package/_cjs/data/Trace/api.cjs +1 -2
  271. package/_cjs/data/Trace/api.cjs.map +1 -1
  272. package/_cjs/data/Trace/constructors.cjs +1 -2
  273. package/_cjs/data/Trace/constructors.cjs.map +1 -1
  274. package/_cjs/data/Zipped.cjs +1 -2
  275. package/_cjs/data/Zipped.cjs.map +1 -1
  276. package/_cjs/data/bigint/definition.cjs +0 -4
  277. package/_cjs/data/bigint/instances.cjs +1 -2
  278. package/_cjs/data/bigint/instances.cjs.map +1 -1
  279. package/_cjs/data/boolean/definition.cjs +0 -4
  280. package/_cjs/data/boolean/instances.cjs +1 -2
  281. package/_cjs/data/boolean/instances.cjs.map +1 -1
  282. package/_cjs/data/exceptions/IOError.cjs +1 -2
  283. package/_cjs/data/exceptions/IOError.cjs.map +1 -1
  284. package/_cjs/data/exceptions/InterruptedException.cjs +1 -2
  285. package/_cjs/data/exceptions/InterruptedException.cjs.map +1 -1
  286. package/_cjs/data/exceptions/RuntimeError.cjs +0 -4
  287. package/_cjs/data/function/definition.cjs +0 -4
  288. package/_cjs/data/number/definition.cjs +0 -4
  289. package/_cjs/data/number/instances.cjs +1 -2
  290. package/_cjs/data/number/instances.cjs.map +1 -1
  291. package/_cjs/data/object/definition.cjs +0 -4
  292. package/_cjs/data/object/instances.cjs +1 -2
  293. package/_cjs/data/object/instances.cjs.map +1 -1
  294. package/_cjs/data/string/api.cjs +1 -2
  295. package/_cjs/data/string/api.cjs.map +1 -1
  296. package/_cjs/data/string/definition.cjs +0 -4
  297. package/_cjs/data/string/instances.cjs +1 -2
  298. package/_cjs/data/string/instances.cjs.map +1 -1
  299. package/_cjs/data.cjs +0 -4
  300. package/_cjs/global.cjs +0 -4
  301. package/_cjs/index.cjs +0 -4
  302. package/_cjs/internal/Stack.cjs +7 -2
  303. package/_cjs/internal/Stack.cjs.map +1 -1
  304. package/_cjs/json.cjs +0 -4
  305. package/_cjs/optics/At/api.cjs +1 -2
  306. package/_cjs/optics/At/api.cjs.map +1 -1
  307. package/_cjs/optics/At/definition.cjs +1 -2
  308. package/_cjs/optics/At/definition.cjs.map +1 -1
  309. package/_cjs/optics/Index/api.cjs +3 -4
  310. package/_cjs/optics/Index/api.cjs.map +1 -1
  311. package/_cjs/optics/Iso/api.cjs +1 -2
  312. package/_cjs/optics/Iso/api.cjs.map +1 -1
  313. package/_cjs/optics/Iso/definition.cjs +1 -2
  314. package/_cjs/optics/Iso/definition.cjs.map +1 -1
  315. package/_cjs/optics/Lens/api.cjs +2 -3
  316. package/_cjs/optics/Lens/api.cjs.map +1 -1
  317. package/_cjs/optics/Lens/definition.cjs +1 -2
  318. package/_cjs/optics/Lens/definition.cjs.map +1 -1
  319. package/_cjs/optics/Optional/api/compose.cjs +1 -2
  320. package/_cjs/optics/Optional/api/compose.cjs.map +1 -1
  321. package/_cjs/optics/Optional/api/focus.cjs +1 -2
  322. package/_cjs/optics/Optional/api/focus.cjs.map +1 -1
  323. package/_cjs/optics/Optional/api.cjs +1 -2
  324. package/_cjs/optics/Optional/api.cjs.map +1 -1
  325. package/_cjs/optics/Optional/definition.cjs +1 -2
  326. package/_cjs/optics/Optional/definition.cjs.map +1 -1
  327. package/_cjs/optics/Prism/api/compose.cjs +1 -2
  328. package/_cjs/optics/Prism/api/compose.cjs.map +1 -1
  329. package/_cjs/optics/Prism/api/focus.cjs +1 -2
  330. package/_cjs/optics/Prism/api/focus.cjs.map +1 -1
  331. package/_cjs/optics/Prism/api/fromNullable.cjs +1 -2
  332. package/_cjs/optics/Prism/api/fromNullable.cjs.map +1 -1
  333. package/_cjs/optics/Prism/api/just.cjs +1 -2
  334. package/_cjs/optics/Prism/api/just.cjs.map +1 -1
  335. package/_cjs/optics/Prism/definition.cjs +1 -2
  336. package/_cjs/optics/Prism/definition.cjs.map +1 -1
  337. package/_cjs/optics/Traversal/api/compose.cjs +1 -2
  338. package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
  339. package/_cjs/optics/Traversal/api/focus.cjs +1 -2
  340. package/_cjs/optics/Traversal/api/focus.cjs.map +1 -1
  341. package/_cjs/optics/Traversal/api/fromTraversable.cjs +1 -2
  342. package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
  343. package/_cjs/optics/Traversal/definition.cjs +1 -2
  344. package/_cjs/optics/Traversal/definition.cjs.map +1 -1
  345. package/_cjs/optics.cjs +0 -4
  346. package/_cjs/typeclass/ApplicativeExcept.cjs +1 -2
  347. package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
  348. package/_cjs/typeclass/Apply.cjs +1 -14
  349. package/_cjs/typeclass/Apply.cjs.map +1 -1
  350. package/_cjs/typeclass/Chain.cjs +1 -2
  351. package/_cjs/typeclass/Chain.cjs.map +1 -1
  352. package/_cjs/typeclass/Fail.cjs +0 -4
  353. package/_cjs/typeclass/MonadExcept.cjs +1 -2
  354. package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
  355. package/_cjs/typeclass/Monoid.cjs +1 -2
  356. package/_cjs/typeclass/Monoid.cjs.map +1 -1
  357. package/_cjs/typeclass/Nil.cjs +0 -4
  358. package/_cjs/typeclass/Semialign.cjs +1 -2
  359. package/_cjs/typeclass/Semialign.cjs.map +1 -1
  360. package/_cjs/typeclass/Semigroup/api.cjs +1 -2
  361. package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
  362. package/_cjs/typeclass/Semigroup/derivations.cjs +1 -2
  363. package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -1
  364. package/_cjs/typeclass/Witherable.cjs +1 -2
  365. package/_cjs/typeclass/Witherable.cjs.map +1 -1
  366. package/_cjs/typeclass/WitherableWithIndex.cjs +1 -2
  367. package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
  368. package/_cjs/typeclass/builtin/Symbol.cjs +0 -4
  369. package/_cjs/types/extractions.cjs +0 -4
  370. package/_cjs/types/utility.cjs +0 -4
  371. package/_cjs/util/AnsiFormat.cjs +1 -2
  372. package/_cjs/util/AnsiFormat.cjs.map +1 -1
  373. package/_cjs/util/assert.cjs +1 -1
  374. package/_cjs/util/assert.cjs.map +1 -1
  375. package/_cjs/util/pattern.cjs.map +1 -1
  376. package/_cjs/util/rand/distribution/Distribution.cjs +0 -4
  377. package/_cjs/util/rand/generator/RandomGenerator.cjs.map +1 -1
  378. package/_cjs/util.cjs +0 -4
  379. package/_mjs/collection/AsyncIterable/api.mjs +366 -0
  380. package/_mjs/collection/AsyncIterable/api.mjs.map +1 -0
  381. package/_mjs/collection/AsyncIterable/definition.mjs +2 -0
  382. package/_mjs/collection/AsyncIterable/definition.mjs.map +1 -0
  383. package/_mjs/collection/AsyncIterable.mjs +4 -0
  384. package/_mjs/collection/AsyncIterable.mjs.map +1 -0
  385. package/_mjs/collection/Iterable/api.mjs +175 -134
  386. package/_mjs/collection/Iterable/api.mjs.map +1 -1
  387. package/_mjs/collection/Iterable/constructors.mjs.map +1 -1
  388. package/_mjs/collection/compat/ArrayLike/definition.mjs +1 -1
  389. package/_mjs/collection/compat/Map/definition.mjs +1 -1
  390. package/_mjs/collection/compat/Set/definition.mjs +1 -1
  391. package/_mjs/collection/compat.mjs +1 -1
  392. package/_mjs/collection/immutable/Conc/constructors.mjs +2 -2
  393. package/_mjs/collection/immutable/Conc/constructors.mjs.map +1 -1
  394. package/_mjs/collection/immutable/Conc/definition.mjs +1 -1
  395. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  396. package/_mjs/collection/immutable/List/api.mjs +2 -2
  397. package/_mjs/collection/immutable/List/api.mjs.map +1 -1
  398. package/_mjs/collection/immutable/{ImmutableArray → ReadonlyArray}/api/chunksOf.mjs +3 -3
  399. package/_mjs/collection/immutable/ReadonlyArray/api/chunksOf.mjs.map +1 -0
  400. package/_mjs/collection/immutable/ReadonlyArray/api/splitAt.mjs +9 -0
  401. package/_mjs/collection/immutable/ReadonlyArray/api/splitAt.mjs.map +1 -0
  402. package/_mjs/collection/immutable/ReadonlyArray/api/splitWhere.mjs +19 -0
  403. package/_mjs/collection/immutable/ReadonlyArray/api/splitWhere.mjs.map +1 -0
  404. package/_mjs/collection/immutable/ReadonlyArray/api.mjs +1302 -0
  405. package/_mjs/collection/immutable/ReadonlyArray/api.mjs.map +1 -0
  406. package/_mjs/collection/immutable/ReadonlyArray/constructors.mjs +44 -0
  407. package/_mjs/collection/immutable/ReadonlyArray/constructors.mjs.map +1 -0
  408. package/_mjs/collection/immutable/ReadonlyArray/definition.mjs.map +1 -0
  409. package/_mjs/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.mjs +4 -5
  410. package/_mjs/collection/immutable/ReadonlyArray/instances.mjs.map +1 -0
  411. package/_mjs/collection/immutable/ReadonlyArray.mjs +11 -0
  412. package/_mjs/collection/immutable/ReadonlyArray.mjs.map +1 -0
  413. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/api.mjs +433 -0
  414. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/api.mjs.map +1 -0
  415. package/_mjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/constructors.mjs +16 -15
  416. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/constructors.mjs.map +1 -0
  417. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/definition.mjs +2 -0
  418. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/definition.mjs.map +1 -0
  419. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/destructors.mjs +41 -0
  420. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/destructors.mjs.map +1 -0
  421. package/_mjs/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.mjs +2 -2
  422. package/_mjs/collection/immutable/ReadonlyNonEmptyArray/instances.mjs.map +1 -0
  423. package/_mjs/collection/immutable/ReadonlyNonEmptyArray.mjs +7 -0
  424. package/_mjs/collection/immutable/ReadonlyNonEmptyArray.mjs.map +1 -0
  425. package/_mjs/collection/immutable/Vector/api.mjs +224 -224
  426. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  427. package/_mjs/collection/immutable.mjs +1 -1
  428. package/_mjs/collection/internal.mjs +1 -1
  429. package/_mjs/collection/mutable.mjs +1 -1
  430. package/_mjs/collection/weak.mjs +1 -1
  431. package/_mjs/collection.mjs +1 -1
  432. package/_mjs/control/Eval/api.mjs +83 -15
  433. package/_mjs/control/Eval/api.mjs.map +1 -1
  434. package/_mjs/control/Eval/constructors.mjs +4 -0
  435. package/_mjs/control/Eval/constructors.mjs.map +1 -1
  436. package/_mjs/control/Pure/runtime.mjs +14 -8
  437. package/_mjs/control/Pure/runtime.mjs.map +1 -1
  438. package/_mjs/control.mjs +1 -1
  439. package/_mjs/data/Byte.mjs +1 -1
  440. package/_mjs/data/CaseClass.mjs +10 -12
  441. package/_mjs/data/CaseClass.mjs.map +1 -1
  442. package/_mjs/data/Cause/api/fold.mjs +32 -32
  443. package/_mjs/data/Cause/api/fold.mjs.map +1 -1
  444. package/_mjs/data/Const/api.mjs +7 -7
  445. package/_mjs/data/Const/api.mjs.map +1 -1
  446. package/_mjs/data/Const/instances.mjs +11 -11
  447. package/_mjs/data/Const/instances.mjs.map +1 -1
  448. package/_mjs/data/Date/definition.mjs +1 -1
  449. package/_mjs/data/Datum/api.mjs +107 -108
  450. package/_mjs/data/Datum/api.mjs.map +1 -1
  451. package/_mjs/data/Datum.mjs +5 -0
  452. package/_mjs/data/Datum.mjs.map +1 -0
  453. package/_mjs/data/DatumEither/api.mjs +53 -53
  454. package/_mjs/data/DatumEither/api.mjs.map +1 -1
  455. package/_mjs/data/Either/api.mjs +42 -42
  456. package/_mjs/data/Either/api.mjs.map +1 -1
  457. package/_mjs/data/Either/constructors.mjs +20 -20
  458. package/_mjs/data/Either/constructors.mjs.map +1 -1
  459. package/_mjs/data/EitherT/api.mjs +27 -27
  460. package/_mjs/data/EitherT/api.mjs.map +1 -1
  461. package/_mjs/data/Environment/api.mjs.map +1 -1
  462. package/_mjs/data/EnvironmentPatch.mjs +1 -1
  463. package/_mjs/data/Eq/api.mjs +175 -3
  464. package/_mjs/data/Eq/api.mjs.map +1 -1
  465. package/_mjs/data/Eq/derivations.mjs +8 -19
  466. package/_mjs/data/Eq/derivations.mjs.map +1 -1
  467. package/_mjs/data/Exit/api.mjs +88 -78
  468. package/_mjs/data/Exit/api.mjs.map +1 -1
  469. package/_mjs/data/Guard/api.mjs +12 -15
  470. package/_mjs/data/Guard/api.mjs.map +1 -1
  471. package/_mjs/data/Maybe/api.mjs +71 -58
  472. package/_mjs/data/Maybe/api.mjs.map +1 -1
  473. package/_mjs/data/Maybe/constructors.mjs +36 -36
  474. package/_mjs/data/Maybe/constructors.mjs.map +1 -1
  475. package/_mjs/data/Predicate/definition.mjs +1 -1
  476. package/_mjs/data/Predicate/match.mjs +1 -1
  477. package/_mjs/data/Refinement/definition.mjs +1 -1
  478. package/_mjs/data/Showable/util.mjs.map +1 -1
  479. package/_mjs/data/Struct/api.mjs +4 -5
  480. package/_mjs/data/Struct/api.mjs.map +1 -1
  481. package/_mjs/data/These/api.mjs +85 -85
  482. package/_mjs/data/These/api.mjs.map +1 -1
  483. package/_mjs/data/bigint/definition.mjs +1 -1
  484. package/_mjs/data/boolean/definition.mjs +1 -1
  485. package/_mjs/data/exceptions/RuntimeError.mjs +1 -1
  486. package/_mjs/data/function/definition.mjs +1 -1
  487. package/_mjs/data/number/definition.mjs +1 -1
  488. package/_mjs/data/object/definition.mjs +1 -1
  489. package/_mjs/data/string/definition.mjs +1 -1
  490. package/_mjs/data.mjs +1 -1
  491. package/_mjs/global.mjs +1 -1
  492. package/_mjs/index.mjs +1 -1
  493. package/_mjs/internal/Stack.mjs +7 -2
  494. package/_mjs/internal/Stack.mjs.map +1 -1
  495. package/_mjs/json.mjs +1 -1
  496. package/_mjs/optics/Index/api.mjs +2 -2
  497. package/_mjs/optics/Index/api.mjs.map +1 -1
  498. package/_mjs/optics/Lens/api.mjs +1 -1
  499. package/_mjs/optics.mjs +1 -1
  500. package/_mjs/typeclass/Apply.mjs +0 -12
  501. package/_mjs/typeclass/Apply.mjs.map +1 -1
  502. package/_mjs/typeclass/Fail.mjs +1 -1
  503. package/_mjs/typeclass/Nil.mjs +1 -1
  504. package/_mjs/typeclass/builtin/Symbol.mjs +1 -1
  505. package/_mjs/types/extractions.mjs +1 -1
  506. package/_mjs/types/utility.mjs +1 -1
  507. package/_mjs/util/assert.mjs +1 -1
  508. package/_mjs/util/assert.mjs.map +1 -1
  509. package/_mjs/util/pattern.mjs.map +1 -1
  510. package/_mjs/util/rand/distribution/Distribution.mjs +1 -1
  511. package/_mjs/util/rand/generator/RandomGenerator.mjs.map +1 -1
  512. package/_mjs/util.mjs +1 -1
  513. package/_src/collection/AsyncIterable/api.ts +369 -0
  514. package/_src/collection/AsyncIterable/definition.ts +7 -0
  515. package/_src/collection/AsyncIterable.ts +4 -0
  516. package/_src/collection/Iterable/api.ts +215 -162
  517. package/_src/collection/Iterable/constructors.ts +0 -2
  518. package/_src/collection/compat/ArrayLike/definition.ts +2 -2
  519. package/_src/collection/compat.ts +0 -1
  520. package/_src/collection/immutable/Conc/constructors.ts +1 -2
  521. package/_src/collection/immutable/Conc/definition.ts +7 -6
  522. package/_src/collection/immutable/List/api.ts +2 -2
  523. package/_src/collection/immutable/ReadonlyArray/api/chunksOf.ts +8 -0
  524. package/_src/collection/immutable/ReadonlyArray/api/splitAt.ts +8 -0
  525. package/_src/collection/immutable/{ImmutableArray → ReadonlyArray}/api/splitWhere.ts +3 -3
  526. package/_src/collection/immutable/ReadonlyArray/api.ts +1536 -0
  527. package/_src/collection/immutable/ReadonlyArray/constructors.ts +47 -0
  528. package/_src/collection/{compat/Array → immutable/ReadonlyArray}/definition.ts +8 -0
  529. package/_src/collection/immutable/{ImmutableArray → ReadonlyArray}/instances.ts +22 -22
  530. package/_src/collection/immutable/ReadonlyArray.ts +12 -0
  531. package/_src/collection/immutable/ReadonlyNonEmptyArray/api.ts +481 -0
  532. package/_src/collection/immutable/ReadonlyNonEmptyArray/constructors.ts +76 -0
  533. package/_src/collection/immutable/ReadonlyNonEmptyArray/definition.ts +22 -0
  534. package/_src/collection/immutable/ReadonlyNonEmptyArray/destructors.ts +41 -0
  535. package/_src/collection/immutable/{ImmutableNonEmptyArray → ReadonlyNonEmptyArray}/instances.ts +13 -13
  536. package/_src/collection/immutable/ReadonlyNonEmptyArray.ts +7 -0
  537. package/_src/collection/immutable/Vector/api.ts +310 -309
  538. package/_src/collection/immutable.ts +11 -11
  539. package/_src/collection.ts +6 -5
  540. package/_src/control/Eval/api.ts +109 -16
  541. package/_src/control/Eval/constructors.ts +5 -0
  542. package/_src/control/Pure/runtime.ts +8 -2
  543. package/_src/data/CaseClass.ts +5 -5
  544. package/_src/data/Cause/api/fold.ts +2 -2
  545. package/_src/data/Const/api.ts +8 -8
  546. package/_src/data/Const/instances.ts +10 -10
  547. package/_src/data/Datum/api.ts +113 -113
  548. package/_src/data/Datum.ts +5 -0
  549. package/_src/data/DatumEither/api.ts +41 -43
  550. package/_src/data/Either/api.ts +47 -47
  551. package/_src/data/Either/constructors.ts +14 -16
  552. package/_src/data/EitherT/api.ts +111 -110
  553. package/_src/data/Environment/api.ts +6 -3
  554. package/_src/data/Eq/api.ts +193 -4
  555. package/_src/data/Eq/derivations.ts +12 -19
  556. package/_src/data/Exit/api.ts +89 -77
  557. package/_src/data/Guard/api.ts +11 -11
  558. package/_src/data/Maybe/api.ts +82 -73
  559. package/_src/data/Maybe/constructors.ts +34 -36
  560. package/_src/data/Showable/util.ts +1 -1
  561. package/_src/data/Struct/api.ts +1 -1
  562. package/_src/data/These/api.ts +93 -92
  563. package/_src/data.ts +1 -0
  564. package/_src/global.ts +7 -12
  565. package/_src/internal/Stack.ts +6 -2
  566. package/_src/optics/Index/api.ts +1 -1
  567. package/_src/typeclass/Apply.ts +6 -18
  568. package/_src/util/assert.ts +2 -2
  569. package/_src/util/pattern.ts +8 -90
  570. package/_src/util/rand/generator/RandomGenerator.ts +1 -0
  571. package/collection/AsyncIterable/api.d.ts +71 -0
  572. package/collection/AsyncIterable/definition.d.ts +9 -0
  573. package/collection/AsyncIterable.d.ts +2 -0
  574. package/collection/Iterable/api/traverseConc.d.ts +1 -1
  575. package/collection/Iterable/api.d.ts +40 -25
  576. package/collection/compat/ArrayLike/definition.d.ts +2 -2
  577. package/collection/compat.d.ts +0 -1
  578. package/collection/immutable/Conc/definition.d.ts +1 -1
  579. package/collection/immutable/ReadonlyArray/api/chunksOf.d.ts +5 -0
  580. package/collection/immutable/ReadonlyArray/api/splitAt.d.ts +5 -0
  581. package/collection/immutable/ReadonlyArray/api/splitWhere.d.ts +6 -0
  582. package/collection/immutable/ReadonlyArray/api.d.ts +614 -0
  583. package/collection/immutable/ReadonlyArray/constructors.d.ts +30 -0
  584. package/collection/{compat/Array → immutable/ReadonlyArray}/definition.d.ts +8 -0
  585. package/collection/immutable/ReadonlyArray/instances.d.ts +87 -0
  586. package/collection/immutable/ReadonlyArray.d.ts +7 -0
  587. package/collection/immutable/ReadonlyNonEmptyArray/api.d.ts +186 -0
  588. package/collection/immutable/ReadonlyNonEmptyArray/constructors.d.ts +45 -0
  589. package/collection/immutable/ReadonlyNonEmptyArray/definition.d.ts +21 -0
  590. package/collection/immutable/ReadonlyNonEmptyArray/destructors.d.ts +31 -0
  591. package/collection/immutable/ReadonlyNonEmptyArray/instances.d.ts +52 -0
  592. package/collection/immutable/ReadonlyNonEmptyArray.d.ts +5 -0
  593. package/collection/immutable/Vector/api.d.ts +93 -93
  594. package/collection/immutable.d.ts +2 -2
  595. package/collection.d.ts +1 -0
  596. package/control/Eval/api.d.ts +27 -5
  597. package/control/Eval/constructors.d.ts +5 -0
  598. package/data/CaseClass.d.ts +2 -3
  599. package/data/Const/api.d.ts +5 -5
  600. package/data/Const/instances.d.ts +4 -4
  601. package/data/Datum/api.d.ts +64 -64
  602. package/data/Datum.d.ts +3 -0
  603. package/data/DatumEither/api.d.ts +25 -25
  604. package/data/Either/api.d.ts +24 -24
  605. package/data/Either/constructors.d.ts +12 -12
  606. package/data/EitherT/api.d.ts +16 -16
  607. package/data/Environment/api.d.ts +4 -2
  608. package/data/Eq/api.d.ts +89 -2
  609. package/data/Eq/derivations.d.ts +7 -0
  610. package/data/Exit/api.d.ts +43 -37
  611. package/data/Guard/api.d.ts +7 -8
  612. package/data/Maybe/api.d.ts +38 -33
  613. package/data/Maybe/constructors.d.ts +16 -16
  614. package/data/Showable/util.d.ts +1 -1
  615. package/data/These/api.d.ts +26 -26
  616. package/data.d.ts +1 -0
  617. package/global.d.ts +4 -8
  618. package/internal/Stack.d.ts +2 -0
  619. package/optics/Lens/api.d.ts +1 -1
  620. package/optics/Traversal/api/fromTraversable.d.ts +1 -1
  621. package/package.json +3 -3
  622. package/typeclass/Apply.d.ts +0 -6
  623. package/util/assert.d.ts +1 -1
  624. package/_cjs/collection/compat/Array/api.cjs +0 -142
  625. package/_cjs/collection/compat/Array/api.cjs.map +0 -1
  626. package/_cjs/collection/compat/Array/definition.cjs.map +0 -1
  627. package/_cjs/collection/compat/Array.cjs.map +0 -1
  628. package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs +0 -19
  629. package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs.map +0 -1
  630. package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs +0 -18
  631. package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs.map +0 -1
  632. package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs +0 -18
  633. package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs.map +0 -1
  634. package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs +0 -28
  635. package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs.map +0 -1
  636. package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +0 -1
  637. package/_cjs/collection/immutable/ImmutableArray/constructors.cjs +0 -59
  638. package/_cjs/collection/immutable/ImmutableArray/constructors.cjs.map +0 -1
  639. package/_cjs/collection/immutable/ImmutableArray/definition.cjs +0 -44
  640. package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +0 -1
  641. package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +0 -1
  642. package/_cjs/collection/immutable/ImmutableArray.cjs.map +0 -1
  643. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +0 -474
  644. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +0 -1
  645. package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs +0 -79
  646. package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs.map +0 -1
  647. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +0 -36
  648. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +0 -1
  649. package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs +0 -53
  650. package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs.map +0 -1
  651. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +0 -1
  652. package/_cjs/collection/immutable/ImmutableNonEmptyArray.cjs.map +0 -1
  653. package/_cjs/control/Eval/api/sequenceArray.cjs +0 -17
  654. package/_cjs/control/Eval/api/sequenceArray.cjs.map +0 -1
  655. package/_mjs/collection/compat/Array/api.mjs +0 -125
  656. package/_mjs/collection/compat/Array/api.mjs.map +0 -1
  657. package/_mjs/collection/compat/Array/definition.mjs.map +0 -1
  658. package/_mjs/collection/compat/Array.mjs +0 -4
  659. package/_mjs/collection/compat/Array.mjs.map +0 -1
  660. package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs.map +0 -1
  661. package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs +0 -10
  662. package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs.map +0 -1
  663. package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs +0 -10
  664. package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs.map +0 -1
  665. package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs +0 -20
  666. package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs.map +0 -1
  667. package/_mjs/collection/immutable/ImmutableArray/api.mjs +0 -1284
  668. package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +0 -1
  669. package/_mjs/collection/immutable/ImmutableArray/constructors.mjs +0 -46
  670. package/_mjs/collection/immutable/ImmutableArray/constructors.mjs.map +0 -1
  671. package/_mjs/collection/immutable/ImmutableArray/definition.mjs +0 -35
  672. package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +0 -1
  673. package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +0 -1
  674. package/_mjs/collection/immutable/ImmutableArray.mjs +0 -12
  675. package/_mjs/collection/immutable/ImmutableArray.mjs.map +0 -1
  676. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +0 -437
  677. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +0 -1
  678. package/_mjs/collection/immutable/ImmutableNonEmptyArray/constructors.mjs.map +0 -1
  679. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +0 -25
  680. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +0 -1
  681. package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs +0 -43
  682. package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs.map +0 -1
  683. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +0 -1
  684. package/_mjs/collection/immutable/ImmutableNonEmptyArray.mjs +0 -7
  685. package/_mjs/collection/immutable/ImmutableNonEmptyArray.mjs.map +0 -1
  686. package/_mjs/control/Eval/api/sequenceArray.mjs +0 -9
  687. package/_mjs/control/Eval/api/sequenceArray.mjs.map +0 -1
  688. package/_src/collection/compat/Array/api.ts +0 -134
  689. package/_src/collection/compat/Array.ts +0 -4
  690. package/_src/collection/immutable/ImmutableArray/api/chunksOf.ts +0 -8
  691. package/_src/collection/immutable/ImmutableArray/api/slice.ts +0 -8
  692. package/_src/collection/immutable/ImmutableArray/api/splitAt.ts +0 -8
  693. package/_src/collection/immutable/ImmutableArray/api.ts +0 -1526
  694. package/_src/collection/immutable/ImmutableArray/constructors.ts +0 -47
  695. package/_src/collection/immutable/ImmutableArray/definition.ts +0 -48
  696. package/_src/collection/immutable/ImmutableArray.ts +0 -13
  697. package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +0 -483
  698. package/_src/collection/immutable/ImmutableNonEmptyArray/constructors.ts +0 -83
  699. package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +0 -47
  700. package/_src/collection/immutable/ImmutableNonEmptyArray/destructors.ts +0 -41
  701. package/_src/collection/immutable/ImmutableNonEmptyArray.ts +0 -7
  702. package/_src/control/Eval/api/sequenceArray.ts +0 -6
  703. package/collection/compat/Array/api.d.ts +0 -62
  704. package/collection/compat/Array.d.ts +0 -2
  705. package/collection/immutable/ImmutableArray/api/chunksOf.d.ts +0 -6
  706. package/collection/immutable/ImmutableArray/api/slice.d.ts +0 -6
  707. package/collection/immutable/ImmutableArray/api/splitAt.d.ts +0 -6
  708. package/collection/immutable/ImmutableArray/api/splitWhere.d.ts +0 -7
  709. package/collection/immutable/ImmutableArray/api.d.ts +0 -602
  710. package/collection/immutable/ImmutableArray/constructors.d.ts +0 -32
  711. package/collection/immutable/ImmutableArray/definition.d.ts +0 -34
  712. package/collection/immutable/ImmutableArray/instances.d.ts +0 -87
  713. package/collection/immutable/ImmutableArray.d.ts +0 -8
  714. package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +0 -186
  715. package/collection/immutable/ImmutableNonEmptyArray/constructors.d.ts +0 -46
  716. package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +0 -40
  717. package/collection/immutable/ImmutableNonEmptyArray/destructors.d.ts +0 -32
  718. package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +0 -52
  719. package/collection/immutable/ImmutableNonEmptyArray.d.ts +0 -5
  720. package/control/Eval/api/sequenceArray.d.ts +0 -6
  721. /package/_cjs/collection/{compat/Array → immutable/ReadonlyArray}/definition.cjs +0 -0
  722. /package/_mjs/collection/{compat/Array → immutable/ReadonlyArray}/definition.mjs +0 -0
@@ -0,0 +1,1536 @@
1
+ import type { ReadonlyArrayF } from "@fncts/base/collection/immutable/ReadonlyArray/definition";
2
+ import type { Monoid } from "@fncts/base/typeclass";
3
+
4
+ import { EitherTag } from "@fncts/base/data/Either";
5
+ import { identity, pipe, tuple } from "@fncts/base/data/function";
6
+ import * as P from "@fncts/base/typeclass";
7
+
8
+ /**
9
+ * @tsplus pipeable fncts.ReadonlyArray align
10
+ */
11
+ export function align<B>(fb: ReadonlyArray<B>) {
12
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<These<A, B>> => {
13
+ return self.alignWith(fb, identity);
14
+ };
15
+ }
16
+
17
+ /**
18
+ * @tsplus pipeable fncts.ReadonlyArray alignWith
19
+ */
20
+ export function alignWith<A, B, C>(fb: ReadonlyArray<B>, f: (_: These<A, B>) => C) {
21
+ return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
22
+ const selfArray = self;
23
+ const thatArray = fb;
24
+ const minlen = Math.min(selfArray.length, thatArray.length);
25
+ const maxlen = Math.max(selfArray.length, thatArray.length);
26
+ const ret = Array<C>(maxlen);
27
+ for (let i = 0; i < minlen; i++) {
28
+ ret[i] = f(These.both(selfArray[i]!, thatArray[i]!));
29
+ }
30
+ if (minlen === maxlen) {
31
+ return ret;
32
+ } else if (selfArray.length > thatArray.length) {
33
+ for (let i = minlen; i < maxlen; i++) {
34
+ ret[i] = f(These.left(selfArray[i]!));
35
+ }
36
+ } else {
37
+ for (let i = minlen; i < maxlen; i++) {
38
+ ret[i] = f(These.right(thatArray[i]!));
39
+ }
40
+ }
41
+ return ret;
42
+ };
43
+ }
44
+
45
+ /**
46
+ * @tsplus pipeable fncts.ReadonlyArray alt
47
+ */
48
+ export function alt<B>(that: Lazy<ReadonlyArray<B>>) {
49
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
50
+ return (<ReadonlyArray<A | B>>self).concat(that());
51
+ };
52
+ }
53
+
54
+ /**
55
+ * @tsplus pipeable fncts.ReadonlyArray ap
56
+ */
57
+ export function ap<A>(fa: ReadonlyArray<A>) {
58
+ return <B>(self: ReadonlyArray<(a: A) => B>): ReadonlyArray<B> => {
59
+ return self.flatMap((f) => fa.map(f));
60
+ };
61
+ }
62
+
63
+ /**
64
+ * @tsplus pipeable fncts.ReadonlyArray append
65
+ */
66
+ export function append<B>(last: B) {
67
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
68
+ const selfArray = self;
69
+ const len = selfArray.length;
70
+ const r = Array<A | B>(len + 1);
71
+ r[len] = last;
72
+ for (let i = 0; i < len; i++) {
73
+ r[i] = selfArray[i]!;
74
+ }
75
+ return r;
76
+ };
77
+ }
78
+
79
+ /**
80
+ * @tsplus static fncts.ReadonlyArrayOps chainRecBreadthFirst
81
+ */
82
+ export function chainRecBreadthFirst<A, B>(a: A, f: (a: A) => ReadonlyArray<Either<A, B>>): ReadonlyArray<B> {
83
+ const initial = f(a);
84
+ const buffer: Array<Either<A, B>> = [];
85
+ const out: Array<B> = [];
86
+
87
+ function go(e: Either<A, B>): void {
88
+ Either.concrete(e);
89
+ if (e._tag === "Left") {
90
+ f(e.left).forEach((v) => buffer.push(v));
91
+ } else {
92
+ out.push(e.right);
93
+ }
94
+ }
95
+
96
+ for (const e of initial) {
97
+ go(e);
98
+ }
99
+
100
+ while (buffer.length > 0) {
101
+ go(buffer.shift()!);
102
+ }
103
+
104
+ return out;
105
+ }
106
+
107
+ /**
108
+ * @tsplus static fncts.ReadonlyArrayOps chainRecDepthFirst
109
+ */
110
+ export function chainRecDepthFirst<A, B>(a: A, f: (a: A) => ReadonlyArray<Either<A, B>>): ReadonlyArray<B> {
111
+ const buffer = f(a).slice();
112
+ const out: B[] = [];
113
+
114
+ while (buffer.length > 0) {
115
+ const e = buffer.shift()!;
116
+ Either.concrete(e);
117
+ if (e._tag === EitherTag.Left) {
118
+ buffer.unshift(...f(e.left));
119
+ } else {
120
+ out.push(e.right);
121
+ }
122
+ }
123
+
124
+ return out;
125
+ }
126
+
127
+ /**
128
+ * A useful recursion pattern for processing a `Array` to produce a new `Array`,
129
+ * often used for "chopping" up the input `Array`. Typically chop is called with some function
130
+ * that will consume an initial prefix of the `Array` and produce a value and the rest of the `Array`.
131
+ *
132
+ * @tsplus pipeable fncts.ReadonlyArray chop
133
+ */
134
+ export function chop<A, B>(f: (as: ReadonlyNonEmptyArray<A>) => readonly [B, ReadonlyArray<A>]) {
135
+ return (as: ReadonlyArray<A>): ReadonlyArray<B> => {
136
+ const result: Array<B> = [];
137
+ let cs: ReadonlyArray<A> = as;
138
+ while (cs.isNonEmpty()) {
139
+ const [b, c] = f(cs);
140
+ result.push(b);
141
+ cs = c;
142
+ }
143
+ return result;
144
+ };
145
+ }
146
+
147
+ /**
148
+ * @tsplus pipeable fncts.ReadonlyArray collectWhile
149
+ */
150
+ export function collectWhile<A, B>(f: (a: A) => Maybe<B>) {
151
+ return (as: ReadonlyArray<A>): ReadonlyArray<B> => {
152
+ const result: Array<B> = [];
153
+ for (let i = 0; i < as.length; i++) {
154
+ const o = f(as[i]!);
155
+ if (o.isJust()) {
156
+ result.push(o.value);
157
+ } else {
158
+ break;
159
+ }
160
+ }
161
+ return result;
162
+ };
163
+ }
164
+
165
+ /**
166
+ * @tsplus static fncts.ReadonlyArrayOps comprehension
167
+ */
168
+ export function comprehension<A, B, C, D, R>(
169
+ input: [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>, ReadonlyArray<D>],
170
+ f: (a: A, b: B, c: C, d: D) => R,
171
+ g?: (a: A, b: B, c: C, d: D) => boolean,
172
+ ): ReadonlyArray<R>;
173
+ export function comprehension<A, B, C, R>(
174
+ input: [ReadonlyArray<A>, ReadonlyArray<B>, ReadonlyArray<C>],
175
+ f: (a: A, b: B, c: C) => R,
176
+ g?: (a: A, b: B, c: C) => boolean,
177
+ ): ReadonlyArray<R>;
178
+ export function comprehension<A, B, R>(
179
+ input: [ReadonlyArray<A>, ReadonlyArray<B>],
180
+ f: (a: A, b: B) => R,
181
+ g?: (a: A, b: B) => boolean,
182
+ ): ReadonlyArray<R>;
183
+ export function comprehension<A, R>(input: [ReadonlyArray<A>], f: (a: A) => R, g?: (a: A) => boolean): ReadonlyArray<R>;
184
+ export function comprehension<A, R>(
185
+ input: ReadonlyArray<ReadonlyArray<A>>,
186
+ f: (...xs: ReadonlyArray<A>) => R,
187
+ g: (...xs: ReadonlyArray<A>) => boolean = () => true,
188
+ ): ReadonlyArray<R> {
189
+ return Eval.run(comprehensionLoop([], input, f, g));
190
+ }
191
+
192
+ function comprehensionLoop<A, R>(
193
+ scope: ReadonlyArray<A>,
194
+ input: ReadonlyArray<ReadonlyArray<A>>,
195
+ f: (...xs: ReadonlyArray<A>) => R,
196
+ g: (...xs: ReadonlyArray<A>) => boolean,
197
+ ): Eval<ReadonlyArray<R>> {
198
+ if (input.length === 0) {
199
+ return g(...scope) ? Eval.now([f(...scope)]) : Eval.now([]);
200
+ } else {
201
+ return input[0]!
202
+ .traverse(Eval.Applicative)((a) => comprehensionLoop(scope.append(a), input.slice(1), f, g))
203
+ .map((rs) => rs.flatten);
204
+ }
205
+ }
206
+
207
+ /**
208
+ * @tsplus pipeable fncts.ReadonlyArray concat
209
+ * @tsplus pipeable-operator fncts.ReadonlyArray +
210
+ */
211
+ export function concat<B>(that: ReadonlyArray<B>) {
212
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
213
+ const lenx = self.length;
214
+ if (lenx === 0) {
215
+ return that;
216
+ }
217
+ const leny = that.length;
218
+ if (leny === 0) {
219
+ return self;
220
+ }
221
+ const r = Array<A | B>(lenx + leny);
222
+ for (let i = 0; i < lenx; i++) {
223
+ r[i] = self[i]!;
224
+ }
225
+ for (let i = 0; i < leny; i++) {
226
+ r[i + lenx] = that[i]!;
227
+ }
228
+ return r;
229
+ };
230
+ }
231
+
232
+ /**
233
+ * @tsplus pipeable fncts.ReadonlyArray cross
234
+ */
235
+ export function cross<B>(fb: ReadonlyArray<B>) {
236
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<Zipped.Make<A, B>> => {
237
+ return self.crossWith(fb, (a, b) => Zipped(a, b));
238
+ };
239
+ }
240
+
241
+ /**
242
+ * @tsplus pipeable fncts.ReadonlyArray crossWith
243
+ */
244
+ export function crossWith<A, B, C>(fb: ReadonlyArray<B>, f: (a: A, b: B) => C) {
245
+ return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
246
+ return self.flatMap((a) => fb.map((b) => f(a, b)));
247
+ };
248
+ }
249
+
250
+ /**
251
+ * @tsplus pipeable fncts.ReadonlyArray deleteAt
252
+ */
253
+ export function deleteAt(i: number) {
254
+ return <A>(as: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
255
+ return as.isOutOfBound(i) ? Nothing() : Just(as.unsafeDeleteAt(i));
256
+ };
257
+ }
258
+
259
+ /**
260
+ * @tsplus pipeable fncts.ReadonlyArray difference
261
+ */
262
+ export function difference<A>(ys: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
263
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
264
+ return self.filter((a) => !ys.elem(a, E));
265
+ };
266
+ }
267
+ /**
268
+ * @tsplus pipeable fncts.ReadonlyArray drop
269
+ */
270
+ export function drop(n: number) {
271
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
272
+ return self.slice(n);
273
+ };
274
+ }
275
+
276
+ /**
277
+ * @tsplus pipeable fncts.ReadonlyArray dropLast
278
+ */
279
+ export function dropLast(n: number) {
280
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
281
+ return self.slice(0, self.length - n);
282
+ };
283
+ }
284
+
285
+ /**
286
+ * @tsplus pipeable fncts.ReadonlyArray dropLastWhile
287
+ */
288
+ export function dropLastWhile<A>(p: Predicate<A>) {
289
+ return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
290
+ return as.slice(0, as.spanIndexRight(p) + 1);
291
+ };
292
+ }
293
+
294
+ /**
295
+ * @tsplus pipeable fncts.ReadonlyArray dropWhile
296
+ */
297
+ export function dropWhile<A>(p: Predicate<A>) {
298
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
299
+ return self.slice(self.spanIndexLeft(p));
300
+ };
301
+ }
302
+
303
+ /**
304
+ * Test if a value is a member of an array. Takes an `Eq<A>` as a single
305
+ * argument which returns the function to use to search for a value of type `A` in
306
+ * an array of type `ReadonlyArray<A>`.
307
+ *
308
+ * @tsplus pipeable fncts.ReadonlyArray elem
309
+ * @tsplus pipeable fncts.Array elem
310
+ */
311
+ export function elem<A>(a: A, /** @tsplus auto */ E: P.Eq<A>) {
312
+ return (as: ReadonlyArray<A>): boolean => {
313
+ const predicate = (element: A) => E.equals(a)(element);
314
+ const len = as.length;
315
+ for (let i = 0; i < len; i++) {
316
+ if (predicate(as[i]!)) {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ };
322
+ }
323
+
324
+ /**
325
+ * @tsplus pipeable fncts.ReadonlyArray every
326
+ */
327
+ export function every<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>;
328
+ export function every<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => boolean;
329
+ export function every<A>(p: Predicate<A>) {
330
+ return (self: ReadonlyArray<A>): boolean => {
331
+ return self.everyWithIndex((_, a) => p(a));
332
+ };
333
+ }
334
+
335
+ /**
336
+ * @tsplus pipeable fncts.ReadonlyArray everyWithIndex
337
+ */
338
+ export function everyWithIndex<A, B extends A>(
339
+ p: RefinementWithIndex<number, A, B>,
340
+ ): (self: ReadonlyArray<A>) => self is ReadonlyArray<B>;
341
+ export function everyWithIndex<A>(p: PredicateWithIndex<number, A>): (self: ReadonlyArray<A>) => boolean;
342
+ export function everyWithIndex<A>(p: PredicateWithIndex<number, A>) {
343
+ return (self: ReadonlyArray<A>): boolean => {
344
+ let result = true;
345
+ let i = 0;
346
+ while (result && i < self.length) {
347
+ result = p(i, self[i]!);
348
+ i++;
349
+ }
350
+ return result;
351
+ };
352
+ }
353
+
354
+ /**
355
+ * @tsplus pipeable fncts.ReadonlyArray filter
356
+ */
357
+ export function filter<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
358
+ export function filter<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
359
+ export function filter<A>(p: Predicate<A>) {
360
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
361
+ return self.filterWithIndex((_, a) => p(a));
362
+ };
363
+ }
364
+
365
+ /**
366
+ * @tsplus pipeable fncts.ReadonlyArray filterMap
367
+ */
368
+ export function filterMap<A, B>(f: (a: A) => Maybe<B>) {
369
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
370
+ return self.filterMapWithIndex((_, a) => f(a));
371
+ };
372
+ }
373
+
374
+ /**
375
+ * @tsplus pipeable fncts.Array filterMap
376
+ * @tsplus pipeable fncts.ReadonlyArray filterMap
377
+ */
378
+ export function filterMapUndefined<A, B>(f: (a: A) => B | undefined) {
379
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
380
+ const out: Array<B> = [];
381
+ for (let i = 0; i < self.length; i++) {
382
+ const v = f(self[i]!);
383
+ if (v !== undefined) {
384
+ out.push(v);
385
+ }
386
+ }
387
+ return out;
388
+ };
389
+ }
390
+
391
+ /**
392
+ * @tsplus pipeable fncts.ReadonlyArray filterMapWithIndex
393
+ */
394
+ export function filterMapWithIndex<A, B>(f: (i: number, a: A) => Maybe<B>) {
395
+ return (fa: ReadonlyArray<A>): ReadonlyArray<B> => {
396
+ const result = [];
397
+ for (let i = 0; i < fa.length; i++) {
398
+ const maybeB = f(i, fa[i]!);
399
+ if (maybeB.isJust()) {
400
+ result.push(maybeB.value);
401
+ }
402
+ }
403
+ return result;
404
+ };
405
+ }
406
+
407
+ /**
408
+ * @tsplus pipeable fncts.ReadonlyArray filterWithIndex
409
+ */
410
+ export function filterWithIndex<A, B extends A>(
411
+ p: RefinementWithIndex<number, A, B>,
412
+ ): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
413
+ export function filterWithIndex<A>(p: PredicateWithIndex<number, A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
414
+ export function filterWithIndex<A>(p: PredicateWithIndex<number, A>) {
415
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
416
+ const result: Array<A> = [];
417
+ for (let i = 0; i < self.length; i++) {
418
+ const a = self[i]!;
419
+ if (p(i, a)) {
420
+ result.push(a);
421
+ }
422
+ }
423
+ return result;
424
+ };
425
+ }
426
+
427
+ /**
428
+ * @tsplus pipeable fncts.ReadonlyArray find
429
+ */
430
+ export function find<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => Maybe<B>;
431
+ export function find<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => Maybe<A>;
432
+ export function find<A>(p: Predicate<A>) {
433
+ return (self: ReadonlyArray<A>): Maybe<A> => {
434
+ return self.findWithIndex((_, a) => p(a));
435
+ };
436
+ }
437
+
438
+ /**
439
+ * @tsplus pipeable fncts.ReadonlyArray findIndex
440
+ */
441
+ export function findIndex<A>(predicate: Predicate<A>) {
442
+ return (as: ReadonlyArray<A>): Maybe<number> => {
443
+ return as.findMapWithIndex((i, a) => (predicate(a) ? Just(i) : Nothing()));
444
+ };
445
+ }
446
+
447
+ /**
448
+ * @tsplus pipeable fncts.ReadonlyArray findLast
449
+ */
450
+ export function findLast<A, B extends A>(p: Refinement<A, B>): (as: ReadonlyArray<A>) => Maybe<B>;
451
+ export function findLast<A>(p: Predicate<A>): (as: ReadonlyArray<A>) => Maybe<A>;
452
+ export function findLast<A>(p: Predicate<A>) {
453
+ return (as: ReadonlyArray<A>): Maybe<A> => {
454
+ const len = as.length;
455
+ for (let i = len - 1; i >= 0; i--) {
456
+ if (p(as[i]!)) {
457
+ return Just(as[i]!);
458
+ }
459
+ }
460
+ return Nothing();
461
+ };
462
+ }
463
+ /**
464
+ * @tsplus pipeable fncts.ReadonlyArray findLastIndex
465
+ */
466
+ export function findLastIndex<A>(p: Predicate<A>) {
467
+ return (self: ReadonlyArray<A>): Maybe<number> => {
468
+ return self.findLastMapWithIndex((i, a) => (p(a) ? Just(i) : Nothing()));
469
+ };
470
+ }
471
+
472
+ /**
473
+ * @tsplus pipeable fncts.ReadonlyArray findLastMap
474
+ */
475
+ export function findLastMap<A, B>(f: (a: A) => Maybe<B>) {
476
+ return (as: ReadonlyArray<A>): Maybe<B> => {
477
+ return as.findLastMapWithIndex((_, a) => f(a));
478
+ };
479
+ }
480
+
481
+ /**
482
+ * @tsplus pipeable fncts.ReadonlyArray findLastMapWithIndex
483
+ */
484
+ export function findLastMapWithIndex<A, B>(f: (i: number, a: A) => Maybe<B>) {
485
+ return (as: ReadonlyArray<A>): Maybe<B> => {
486
+ const len = as.length;
487
+ for (let i = len - 1; i >= 0; i--) {
488
+ const v = f(i, as[i]!);
489
+ if (v.isJust()) {
490
+ return v;
491
+ }
492
+ }
493
+ return Nothing();
494
+ };
495
+ }
496
+ /**
497
+ * @tsplus pipeable fncts.ReadonlyArray findMap
498
+ */
499
+ export function findMap<A, B>(f: (a: A) => Maybe<B>) {
500
+ return (as: ReadonlyArray<A>): Maybe<B> => {
501
+ return as.findMapWithIndex((_, a) => f(a));
502
+ };
503
+ }
504
+ /**
505
+ * @tsplus pipeable fncts.ReadonlyArray findMapWithIndex
506
+ */
507
+ export function findMapWithIndex<A, B>(f: (index: number, a: A) => Maybe<B>) {
508
+ return (as: ReadonlyArray<A>): Maybe<B> => {
509
+ const len = as.length;
510
+ for (let i = 0; i < len; i++) {
511
+ const v = f(i, as[i]!);
512
+ if (v.isJust()) {
513
+ return v;
514
+ }
515
+ }
516
+ return Nothing();
517
+ };
518
+ }
519
+
520
+ /**
521
+ * @tsplus pipeable fncts.ReadonlyArray findWithIndex
522
+ */
523
+ export function findWithIndex<A, B extends A>(p: RefinementWithIndex<number, A, B>): (as: ReadonlyArray<A>) => Maybe<B>;
524
+ export function findWithIndex<A>(p: PredicateWithIndex<number, A>): (as: ReadonlyArray<A>) => Maybe<A>;
525
+ export function findWithIndex<A>(p: PredicateWithIndex<number, A>) {
526
+ return (as: ReadonlyArray<A>): Maybe<A> => {
527
+ const len = as.length;
528
+ for (let i = 0; i < len; i++) {
529
+ if (p(i, as[i]!)) {
530
+ return Just(as[i]!);
531
+ }
532
+ }
533
+ return Nothing();
534
+ };
535
+ }
536
+ /**
537
+ * @tsplus pipeable fncts.ReadonlyArray flatMap
538
+ */
539
+ export function flatMap<A, B>(f: (a: A) => ReadonlyArray<B>) {
540
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
541
+ return self.flatMapWithIndex((_, a) => f(a));
542
+ };
543
+ }
544
+ /**
545
+ * @tsplus pipeable fncts.ReadonlyArray flatMapWithIndex
546
+ */
547
+ export function flatMapWithIndex<A, B>(f: (i: number, a: A) => ReadonlyArray<B>) {
548
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
549
+ let outLen = 0;
550
+ const len = self.length;
551
+ const temp = Array<Array<B>>(len);
552
+ for (let i = 0; i < len; i++) {
553
+ const e = self[i]!;
554
+ const arr = f(i, e);
555
+ outLen += arr.length;
556
+ temp[i] = arr! as Array<B>;
557
+ }
558
+ const out = Array<B>(outLen);
559
+ let start = 0;
560
+ for (let i = 0; i < len; i++) {
561
+ const arr = temp[i]!;
562
+ const l = arr.length;
563
+ for (let j = 0; j < l; j++) {
564
+ out[j + start] = arr[j]!;
565
+ }
566
+ start += l;
567
+ }
568
+ return out;
569
+ };
570
+ }
571
+
572
+ /**
573
+ * @tsplus getter fncts.ReadonlyArray flatten
574
+ */
575
+ export function flatten<A>(self: ReadonlyArray<ReadonlyArray<A>>): ReadonlyArray<A> {
576
+ return self.flatMap(identity);
577
+ }
578
+
579
+ /**
580
+ * @tsplus pipeable fncts.ReadonlyArray fold
581
+ */
582
+ export function fold<M>(/** @tsplus auto */ M: Monoid<M>) {
583
+ return (self: ReadonlyArray<M>): M => {
584
+ return self.foldLeft(M.nat, (b, a) => M.combine(a)(b));
585
+ };
586
+ }
587
+
588
+ /**
589
+ * @tsplus pipeable fncts.ReadonlyArray foldLeft
590
+ * @tsplus pipeable fncts.Array foldLeft
591
+ */
592
+ export function foldLeft<A, B>(b: B, f: (b: B, a: A) => B) {
593
+ return (self: ReadonlyArray<A>): B => {
594
+ return self.foldLeftWithIndex(b, (_, b, a) => f(b, a));
595
+ };
596
+ }
597
+
598
+ /**
599
+ * @tsplus pipeable fncts.ReadonlyArray foldLeftWhile
600
+ * @tsplus pipeable fncts.Array foldLeftWhile
601
+ */
602
+ export function foldLeftWhile<A, B>(b: B, p: Predicate<B>, f: (b: B, a: A) => B) {
603
+ return (self: ReadonlyArray<A>): B => {
604
+ return self.foldLeftWithIndexWhile(b, p, (_, b, a) => f(b, a));
605
+ };
606
+ }
607
+
608
+ /**
609
+ * @tsplus pipeable fncts.ReadonlyArray foldLeftWithIndex
610
+ * @tsplus pipeable fncts.Array foldLeftWithIndex
611
+ */
612
+ export function foldLeftWithIndex<A, B>(b: B, f: (i: number, b: B, a: A) => B) {
613
+ return (self: ReadonlyArray<A>): B => {
614
+ const len = self.length;
615
+ let r = b;
616
+ for (let i = 0; i < len; i++) {
617
+ r = f(i, r, self[i]!);
618
+ }
619
+ return r;
620
+ };
621
+ }
622
+
623
+ /**
624
+ * @tsplus pipeable fncts.ReadonlyArray foldLeftWithIndexWhile
625
+ * @tsplus pipeable fncts.Array foldLeftWithIndexWhile
626
+ */
627
+ export function foldLeftWithIndexWhile<A, B>(b: B, p: Predicate<B>, f: (i: number, b: B, a: A) => B) {
628
+ return (self: ReadonlyArray<A>): B => {
629
+ let out = b;
630
+ let cont = p(out);
631
+ for (let i = 0; cont && i < self.length; i++) {
632
+ out = f(i, out, self[i]!);
633
+ cont = p(out);
634
+ }
635
+ return out;
636
+ };
637
+ }
638
+
639
+ /**
640
+ * @tsplus pipeable fncts.ReadonlyArray foldMap
641
+ */
642
+ export function foldMap<A, M>(f: (a: A) => M, /** @tsplus auto */ M: Monoid<M>) {
643
+ return (self: ReadonlyArray<A>): M => {
644
+ return self.foldMapWithIndex((_, a) => f(a), M);
645
+ };
646
+ }
647
+
648
+ /**
649
+ * @tsplus pipeable fncts.ReadonlyArray foldMapWithIndex
650
+ */
651
+ export function foldMapWithIndex<A, M>(f: (i: number, a: A) => M, /** @tsplus auto */ M: Monoid<M>) {
652
+ return (self: ReadonlyArray<A>): M => {
653
+ return self.foldLeftWithIndex(M.nat, (i, b, a) => M.combine(f(i, a))(b));
654
+ };
655
+ }
656
+
657
+ /**
658
+ * @tsplus pipeable fncts.ReadonlyArray foldRight
659
+ */
660
+ export function foldRight<A, B>(b: B, f: (a: A, b: B) => B) {
661
+ return (self: ReadonlyArray<A>): B => {
662
+ return self.foldRightWithIndex(b, (_, a, b) => f(a, b));
663
+ };
664
+ }
665
+
666
+ /**
667
+ * @tsplus pipeable fncts.ReadonlyArray foldRighWhile
668
+ */
669
+ export function foldRightWhile<A, B>(b: B, p: Predicate<B>, f: (a: A, b: B) => B) {
670
+ return (self: ReadonlyArray<A>): B => {
671
+ return self.foldRightWithIndexWhile(b, p, (_, a, b) => f(a, b));
672
+ };
673
+ }
674
+
675
+ /**
676
+ * @tsplus pipeable fncts.ReadonlyArray foldRightWithIndex
677
+ */
678
+ export function foldRightWithIndex<A, B>(b: B, f: (i: number, a: A, b: B) => B) {
679
+ return (self: ReadonlyArray<A>): B => {
680
+ let r = b;
681
+ for (let i = self.length - 1; i >= 0; i--) {
682
+ r = f(i, self[i]!, r);
683
+ }
684
+ return r;
685
+ };
686
+ }
687
+
688
+ /**
689
+ * @tsplus pipeable fncts.ReadonlyArray foldRightWithIndexWhile
690
+ */
691
+ export function foldRightWithIndexWhile<A, B>(b: B, predicate: Predicate<B>, f: (i: number, a: A, b: B) => B) {
692
+ return (self: ReadonlyArray<A>): B => {
693
+ let out = b;
694
+ let cont = predicate(out);
695
+ for (let i = self.length - 1; cont && i >= 0; i--) {
696
+ out = f(i, self[i]!, out);
697
+ cont = predicate(out);
698
+ }
699
+ return out;
700
+ };
701
+ }
702
+
703
+ /**
704
+ * @tsplus pipeable fncts.ReadonlyArray forEach
705
+ */
706
+ export function forEach<A, B>(f: (a: A) => B) {
707
+ return (self: ReadonlyArray<A>): void => {
708
+ return self.forEach(f);
709
+ };
710
+ }
711
+
712
+ /**
713
+ * @tsplus static fncts.ArrayOps fromValue
714
+ */
715
+ export function fromValue<A>(value: A): A extends Array<any> ? A : A extends ReadonlyArray<any> ? A : ReadonlyArray<A> {
716
+ if (Array.isArray(value)) {
717
+ return value as ReturnType<typeof fromValue<A>>;
718
+ } else {
719
+ return [value] as ReturnType<typeof fromValue<A>>;
720
+ }
721
+ }
722
+
723
+ /**
724
+ * @tsplus pipeable fncts.ReadonlyArray get
725
+ * @tsplus pipeable fncts.MutableArray get
726
+ */
727
+ export function get(i: number) {
728
+ return <A>(self: ReadonlyArray<A>): Maybe<A> => {
729
+ return self.isOutOfBound(i) ? Nothing() : Just(self[i]!);
730
+ };
731
+ }
732
+
733
+ /**
734
+ * @tsplus pipeable fncts.ReadonlyArray group
735
+ */
736
+ export function group<A>(E: P.Eq<A>): (self: ReadonlyArray<A>) => ReadonlyArray<ReadonlyNonEmptyArray<A>> {
737
+ return chop((self) => {
738
+ const h = self[0]!;
739
+ const out = [h];
740
+ let i = 1;
741
+ for (; i < self.length; i++) {
742
+ const a = self[i]!;
743
+ if (E.equals(h)(a)) {
744
+ out.push(a);
745
+ } else {
746
+ break;
747
+ }
748
+ }
749
+ return [out.unsafeAsNonEmptyArray, self.slice(i)];
750
+ });
751
+ }
752
+
753
+ /**
754
+ * @tsplus pipeable fncts.ReadonlyArray groupBy
755
+ */
756
+ export function groupBy<A>(f: (a: A) => string) {
757
+ return (self: ReadonlyArray<A>): Readonly<Record<string, ReadonlyNonEmptyArray<A>>> => {
758
+ const out: Record<string, NonEmptyArray<A>> = {};
759
+ for (let i = 0; i < self.length; i++) {
760
+ const a = self[i]!;
761
+ const k = f(a);
762
+ if (Object.prototype.hasOwnProperty.call(out, k)) {
763
+ out[k]!.push(a);
764
+ } else {
765
+ out[k] = [a];
766
+ }
767
+ }
768
+ return Dictionary.get(out).map(ReadonlyNonEmptyArray.from).toRecord;
769
+ };
770
+ }
771
+
772
+ /**
773
+ * @tsplus getter fncts.ReadonlyArray head
774
+ */
775
+ export function head<A>(self: ReadonlyArray<A>): Maybe<A> {
776
+ return self.isNonEmpty() ? Just(self[0]) : Nothing();
777
+ }
778
+
779
+ /**
780
+ * @tsplus getter fncts.ReadonlyArray init
781
+ */
782
+ export function init<A>(self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> {
783
+ const len = self.length;
784
+ return len === 0 ? Nothing() : Just(self.slice(0, len - 1));
785
+ }
786
+
787
+ /**
788
+ * @tsplus pipeable fncts.ReadonlyArray insertAt
789
+ */
790
+ export function insertAt<A>(i: number, a: A) {
791
+ return (self: ReadonlyArray<A>): Maybe<ReadonlyNonEmptyArray<A>> => {
792
+ return self.isOutOfBound(i) ? Nothing() : Just(self.unsafeInsertAt(i, a));
793
+ };
794
+ }
795
+
796
+ /**
797
+ * @tsplus pipeable fncts.ReadonlyArray intersection
798
+ */
799
+ export function intersection<A>(that: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
800
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
801
+ return self.filter((a) => that.elem(a, E));
802
+ };
803
+ }
804
+
805
+ /**
806
+ * @tsplus pipeable fncts.ReadonlyArray intersperse
807
+ */
808
+ export function intersperse<A>(a: A) {
809
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
810
+ const len = self.length;
811
+ return len === 0 ? self : self.slice(1, len).prependAll(a).prepend(self[0]!);
812
+ };
813
+ }
814
+
815
+ /**
816
+ * @tsplus fluent fncts.ReadonlyArray isEmpty
817
+ */
818
+ export function isEmpty<A>(self: ReadonlyArray<A>): boolean {
819
+ return self.length === 0;
820
+ }
821
+
822
+ /**
823
+ * @tsplus fluent fncts.ReadonlyArray isNonEmpty
824
+ */
825
+ export function isNonEmpty<A>(self: ReadonlyArray<A>): self is ReadonlyNonEmptyArray<A> {
826
+ return self.length > 0;
827
+ }
828
+
829
+ /**
830
+ * @tsplus pipeable fncts.ReadonlyArray isOutOfBound
831
+ */
832
+ export function isOutOfBound(i: number) {
833
+ return <A>(self: ReadonlyArray<A>): boolean => {
834
+ return i < 0 || i >= self.length;
835
+ };
836
+ }
837
+
838
+ /**
839
+ * @tsplus pipeable fncts.ReadonlyArray join
840
+ */
841
+ export function join(separator: string) {
842
+ return (self: ReadonlyArray<string>): string => {
843
+ return self.join(separator);
844
+ };
845
+ }
846
+
847
+ /**
848
+ * @tsplus getter fncts.ReadonlyArray last
849
+ */
850
+ export function last<A>(self: ReadonlyArray<A>): Maybe<A> {
851
+ return self.get(self.length - 1);
852
+ }
853
+
854
+ /**
855
+ * @tsplus getter fncts.ReadonlyArray lefts
856
+ */
857
+ export function lefts<E, A>(self: ReadonlyArray<Either<E, A>>): ReadonlyArray<E> {
858
+ const ls: Array<E> = [];
859
+ for (let i = 0; i < self.length; i++) {
860
+ const a = self[i]!;
861
+ Either.concrete(a);
862
+ if (a._tag === EitherTag.Left) {
863
+ ls.push(a.left);
864
+ }
865
+ }
866
+ return ls;
867
+ }
868
+
869
+ /**
870
+ * @tsplus getter fncts.ReadonlyArray length
871
+ */
872
+ export function length<A>(self: ReadonlyArray<A>): number {
873
+ return self.length;
874
+ }
875
+
876
+ /**
877
+ * @tsplus pipeable fncts.ReadonlyArray map
878
+ */
879
+ export function map<A, B>(f: (a: A) => B) {
880
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
881
+ return self.mapWithIndex((_, a) => f(a));
882
+ };
883
+ }
884
+
885
+ /**
886
+ * @tsplus pipeable fncts.ReadonlyArray mapAccum
887
+ */
888
+ export function mapAccum<A, S, B>(s: S, f: (s: S, a: A) => readonly [B, S]) {
889
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, S] => {
890
+ const bs = Array<B>(self.length);
891
+ let state = s;
892
+ for (let i = 0; i < self.length; i++) {
893
+ const result = f(state, self[i]!);
894
+ bs[i] = result[0];
895
+ state = result[1];
896
+ }
897
+ return [bs, state];
898
+ };
899
+ }
900
+
901
+ /**
902
+ * @tsplus pipeable fncts.ReadonlyArray mapWithIndex
903
+ */
904
+ export function mapWithIndex<A, B>(f: (i: number, a: A) => B) {
905
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
906
+ const len = self.length;
907
+ const bs = Array<B>(len);
908
+ for (let i = 0; i < len; i++) {
909
+ bs[i] = f(i, self[i]!);
910
+ }
911
+ return bs;
912
+ };
913
+ }
914
+
915
+ /**
916
+ * @tsplus pipeable fncts.ReadonlyArray modifyAt
917
+ */
918
+ export function modifyAt<A>(i: number, f: (a: A) => A) {
919
+ return (self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
920
+ return self.isOutOfBound(i) ? Nothing() : Just(self.unsafeModifyAt(i, f));
921
+ };
922
+ }
923
+
924
+ /**
925
+ * @tsplus getter fncts.ReadonlyArray mutableClone
926
+ */
927
+ export function mutableClone<A>(self: ReadonlyArray<A>): Array<A> {
928
+ return self.slice(0);
929
+ }
930
+
931
+ /**
932
+ * @tsplus pipeable fncts.ReadonlyArray mutate
933
+ */
934
+ export function mutate<A>(f: (self: Array<A>) => void) {
935
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
936
+ const mut = mutableClone(self);
937
+ f(mut);
938
+ return mut;
939
+ };
940
+ }
941
+
942
+ /**
943
+ * @tsplus pipeable fncts.ReadonlyArray partition
944
+ */
945
+ export function partition<A, B extends A>(
946
+ p: Refinement<A, B>,
947
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
948
+ export function partition<A>(
949
+ p: Predicate<A>,
950
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
951
+ export function partition<A>(p: Predicate<A>) {
952
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
953
+ return self.partitionWithIndex((_, a) => p(a));
954
+ };
955
+ }
956
+
957
+ /**
958
+ * @tsplus pipeable fncts.ReadonlyArray partitionMap
959
+ */
960
+ export function partitionMap<A, B, C>(f: (a: A) => Either<B, C>) {
961
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, ReadonlyArray<C>] => {
962
+ return self.partitionMapWithIndex((_, a) => f(a));
963
+ };
964
+ }
965
+
966
+ /**
967
+ * @tsplus pipeable fncts.ReadonlyArray partitionMapWithIndex
968
+ */
969
+ export function partitionMapWithIndex<A, B, C>(f: (i: number, a: A) => Either<B, C>) {
970
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<B>, ReadonlyArray<C>] => {
971
+ const left = [] as Array<B>;
972
+ const right = [] as Array<C>;
973
+ for (let i = 0; i < self.length; i++) {
974
+ const ea = f(i, self[i]!);
975
+ Either.concrete(ea);
976
+ switch (ea._tag) {
977
+ case EitherTag.Left:
978
+ left.push(ea.left);
979
+ break;
980
+ case EitherTag.Right:
981
+ right.push(ea.right);
982
+ break;
983
+ }
984
+ }
985
+ return [left, right];
986
+ };
987
+ }
988
+
989
+ /**
990
+ * @tsplus pipeable fncts.ReadonlyArray partitionWithIndex
991
+ */
992
+ export function partitionWithIndex<A, B extends A>(
993
+ p: RefinementWithIndex<number, A, B>,
994
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
995
+ export function partitionWithIndex<A>(
996
+ p: PredicateWithIndex<number, A>,
997
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
998
+ export function partitionWithIndex<A>(p: PredicateWithIndex<number, A>) {
999
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
1000
+ const left: Array<A> = [];
1001
+ const right: Array<A> = [];
1002
+ for (let i = 0; i < self.length; i++) {
1003
+ const a = self[i]!;
1004
+ if (p(i, a)) {
1005
+ right.push(a);
1006
+ } else {
1007
+ left.push(a);
1008
+ }
1009
+ }
1010
+ return [left, right];
1011
+ };
1012
+ }
1013
+
1014
+ /**
1015
+ * @tsplus pipeable fncts.ReadonlyArray prepend
1016
+ */
1017
+ export function prepend<B>(head: B) {
1018
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A | B> => {
1019
+ const len = self.length;
1020
+ const out = Array<A | B>(len + 1);
1021
+ out[0] = head;
1022
+ for (let i = 0; i < len; i++) {
1023
+ out[i + 1] = self[i]!;
1024
+ }
1025
+ return out;
1026
+ };
1027
+ }
1028
+
1029
+ /**
1030
+ * @tsplus pipeable fncts.ReadonlyArray prependAll
1031
+ * @tsplus pipeable fncts.Array prependAll
1032
+ */
1033
+ export function prependAll<A>(a: A) {
1034
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1035
+ const out: Array<A> = [];
1036
+ for (let i = 0; i < self.length; i++) {
1037
+ out.push(a, self[i]!);
1038
+ }
1039
+ return out;
1040
+ };
1041
+ }
1042
+
1043
+ /**
1044
+ * @tsplus getter fncts.ReadonlyArray reverse
1045
+ */
1046
+ export function reverse<A>(self: ReadonlyArray<A>): ReadonlyArray<A> {
1047
+ if (self.isEmpty()) {
1048
+ return self;
1049
+ } else if (self.length === 1) {
1050
+ return [self[0]!];
1051
+ } else {
1052
+ const out = Array<A>(self.length);
1053
+ for (let j = 0, i = self.length - 1; i >= 0; i--, j++) {
1054
+ out[j] = self[i]!;
1055
+ }
1056
+ return out;
1057
+ }
1058
+ }
1059
+
1060
+ /**
1061
+ * @tsplus getter fncts.ReadonlyArray rights
1062
+ */
1063
+ export function rights<E, A>(self: ReadonlyArray<Either<E, A>>): ReadonlyArray<A> {
1064
+ const rs: Array<A> = [];
1065
+ for (let i = 0; i < self.length; i++) {
1066
+ const a = self[i]!;
1067
+ Either.concrete(a);
1068
+ if (a._tag === EitherTag.Right) {
1069
+ rs.push(a.right);
1070
+ }
1071
+ }
1072
+ return rs;
1073
+ }
1074
+
1075
+ /**
1076
+ * @tsplus pipeable fncts.ReadonlyArray rotate
1077
+ */
1078
+ export function rotate(n: number) {
1079
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
1080
+ const len = self.length;
1081
+ if (n === 0 || len <= 1 || len === Math.abs(n)) {
1082
+ return self;
1083
+ } else if (n < 0) {
1084
+ return self.rotate(len + n);
1085
+ } else {
1086
+ return self.slice(-n).concat(self.slice(0, len - n));
1087
+ }
1088
+ };
1089
+ }
1090
+
1091
+ /**
1092
+ * @tsplus pipeable fncts.ReadonlyArray scanLeft
1093
+ */
1094
+ export function scanLeft<A, B>(b: B, f: (b: B, a: A) => B) {
1095
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
1096
+ const l = self.length;
1097
+ const r = Array(l + 1);
1098
+ r[0] = b;
1099
+ for (let i = 0; i < l; i++) {
1100
+ r[i + 1] = f(r[i]!, self[i]!);
1101
+ }
1102
+ return r;
1103
+ };
1104
+ }
1105
+
1106
+ /**
1107
+ * @tsplus pipeable fncts.ReadonlyArray scanRight
1108
+ */
1109
+ export function scanRight<A, B>(b: B, f: (a: A, b: B) => B) {
1110
+ return (self: ReadonlyArray<A>): ReadonlyArray<B> => {
1111
+ const l = self.length;
1112
+ const r = Array(l + 1);
1113
+ r[l] = b;
1114
+ for (let i = l - 1; i >= 0; i--) {
1115
+ r[i] = f(self[i]!, r[i + 1]!);
1116
+ }
1117
+ return r;
1118
+ };
1119
+ }
1120
+
1121
+ /**
1122
+ * @tsplus pipeable fncts.ReadonlyArray some
1123
+ */
1124
+ export function some<A>(p: Predicate<A>) {
1125
+ return (self: ReadonlyArray<A>): self is ReadonlyNonEmptyArray<A> => {
1126
+ let result = false;
1127
+ let i = 0;
1128
+ while (!result && i < self.length) {
1129
+ result = p(self[i]!);
1130
+ i++;
1131
+ }
1132
+ return result;
1133
+ };
1134
+ }
1135
+
1136
+ /**
1137
+ * @tsplus pipeable fncts.ReadonlyArray sort
1138
+ */
1139
+ export function sort<A>(/** @tsplus auto */ O: P.Ord<A>) {
1140
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1141
+ return self.isEmpty() || self.length === 1 ? self : self.slice().sort((a, b) => O.compare(b)(a));
1142
+ };
1143
+ }
1144
+
1145
+ /**
1146
+ * @tsplus pipeable fncts.ReadonlyArray sortBy
1147
+ */
1148
+ export function sortBy<A>(Os: ReadonlyArray<P.Ord<A>>) {
1149
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1150
+ return self.sort(Os.fold(P.Ord.getMonoid()));
1151
+ };
1152
+ }
1153
+
1154
+ /**
1155
+ * @tsplus pipeable fncts.ReadonlyArray spanIndexLeft
1156
+ */
1157
+ export function spanIndexLeft<A>(p: Predicate<A>) {
1158
+ return (self: ReadonlyArray<A>): number => {
1159
+ const l = self.length;
1160
+ let i = 0;
1161
+ for (; i < l; i++) {
1162
+ if (!p(self[i]!)) {
1163
+ break;
1164
+ }
1165
+ }
1166
+ return i;
1167
+ };
1168
+ }
1169
+ /**
1170
+ * @tsplus pipeable fncts.ReadonlyArray spanIndexRight
1171
+ */
1172
+ export function spanIndexRight<A>(predicate: Predicate<A>) {
1173
+ return (as: ReadonlyArray<A>): number => {
1174
+ let i = as.length - 1;
1175
+ for (; i >= 0; i--) {
1176
+ if (!predicate(as[i]!)) {
1177
+ break;
1178
+ }
1179
+ }
1180
+ return i;
1181
+ };
1182
+ }
1183
+ /**
1184
+ * @tsplus pipeable fncts.ReadonlyArray spanLeft
1185
+ */
1186
+ export function spanLeft<A, B extends A>(
1187
+ p: Refinement<A, B>,
1188
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<B>, ReadonlyArray<A>];
1189
+ export function spanLeft<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
1190
+ export function spanLeft<A>(p: Predicate<A>) {
1191
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
1192
+ const i = self.spanIndexLeft(p);
1193
+ const init = Array<A>(i);
1194
+ for (let j = 0; j < i; j++) {
1195
+ init[j] = self[j]!;
1196
+ }
1197
+ const l = self.length;
1198
+ const rest = Array<A>(l - i);
1199
+ for (let j = i; j < l; j++) {
1200
+ rest[j - i] = self[j]!;
1201
+ }
1202
+ return [init, rest];
1203
+ };
1204
+ }
1205
+ /**
1206
+ * @tsplus pipeable fncts.ReadonlyArray spanRight
1207
+ */
1208
+ export function spanRight<A, B extends A>(
1209
+ p: Refinement<A, B>,
1210
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<B>];
1211
+ export function spanRight<A>(
1212
+ p: Predicate<A>,
1213
+ ): (self: ReadonlyArray<A>) => readonly [ReadonlyArray<A>, ReadonlyArray<A>];
1214
+ export function spanRight<A>(p: Predicate<A>) {
1215
+ return (self: ReadonlyArray<A>): readonly [ReadonlyArray<A>, ReadonlyArray<A>] => {
1216
+ const i = self.spanIndexRight(p);
1217
+ const l = self.length;
1218
+ const tail = Array<A>(l - i - 1);
1219
+ for (let j = l - 1; j > i; j--) {
1220
+ tail[j - i - 1] = self[j]!;
1221
+ }
1222
+ const rest = Array<A>(i);
1223
+ for (let j = i; j >= 0; j--) {
1224
+ rest[j] = self[j]!;
1225
+ }
1226
+ return [rest, tail];
1227
+ };
1228
+ }
1229
+
1230
+ /**
1231
+ * @tsplus getter fncts.ReadonlyArray tail
1232
+ */
1233
+ export function tail<A>(self: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> {
1234
+ return self.isNonEmpty() ? Just(self.slice(1)) : Nothing();
1235
+ }
1236
+
1237
+ /**
1238
+ * @tsplus pipeable fncts.ReadonlyArray take
1239
+ */
1240
+ export function take(n: number) {
1241
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
1242
+ return self.slice(0, n);
1243
+ };
1244
+ }
1245
+
1246
+ /**
1247
+ * @tsplus pipeable fncts.ReadonlyArray takeLast
1248
+ */
1249
+ export function takeLast(n: number) {
1250
+ return <A>(as: ReadonlyArray<A>): ReadonlyArray<A> => {
1251
+ return isEmpty(as) ? [] : as.slice(-n);
1252
+ };
1253
+ }
1254
+
1255
+ /**
1256
+ * @tsplus pipeable fncts.ReadonlyArray takeWhile
1257
+ */
1258
+ export function takeWhile<A, B extends A>(p: Refinement<A, B>): (self: ReadonlyArray<A>) => ReadonlyArray<B>;
1259
+ export function takeWhile<A>(p: Predicate<A>): (self: ReadonlyArray<A>) => ReadonlyArray<A>;
1260
+ export function takeWhile<A>(p: Predicate<A>) {
1261
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1262
+ const i = self.spanIndexLeft(p);
1263
+ const init = Array<A>(i);
1264
+ for (let j = 0; j < i; j++) {
1265
+ init[j] = self[j]!;
1266
+ }
1267
+ return init;
1268
+ };
1269
+ }
1270
+
1271
+ /**
1272
+ * @tsplus getter fncts.ReadonlyArray traverse
1273
+ */
1274
+ export function traverse_<A>(
1275
+ self: ReadonlyArray<A>,
1276
+ ): <G extends HKT, GC = HKT.None>(
1277
+ G: P.Applicative<G, GC>,
1278
+ ) => <K, Q, W, X, I, S, R, E, B>(
1279
+ f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, B>,
1280
+ ) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> {
1281
+ return (G) => (f) => self.traverseWithIndex(G)((_, a) => f(a));
1282
+ }
1283
+
1284
+ /**
1285
+ * @tsplus getter fncts.ReadonlyArray traverseWithIndex
1286
+ */
1287
+ export function traverseWithIndex_<A>(
1288
+ self: ReadonlyArray<A>,
1289
+ ): <G extends HKT, GC = HKT.None>(
1290
+ G: P.Applicative<G, GC>,
1291
+ ) => <K, Q, W, X, I, S, R, E, B>(
1292
+ f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, B>,
1293
+ ) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>>;
1294
+ export function traverseWithIndex_<A>(
1295
+ self: ReadonlyArray<A>,
1296
+ ): <G>(G: P.Applicative<HKT.F<G>>) => <B>(f: (i: number, a: A) => HKT.FK1<G, B>) => HKT.FK1<G, ReadonlyArray<B>> {
1297
+ return (G) => (f) =>
1298
+ self.foldLeftWithIndex(G.pure(Array.empty()), (i, fbs, a) =>
1299
+ pipe(
1300
+ fbs,
1301
+ G.zipWith(f(i, a), (bs, b) => bs.append(b)),
1302
+ ),
1303
+ );
1304
+ }
1305
+
1306
+ export const traverseWithIndex: P.TraversableWithIndex<ReadonlyArrayF>["traverseWithIndex"] = (G) => (f) => (self) =>
1307
+ self.traverseWithIndex(G)(f);
1308
+
1309
+ export const traverse: P.Traversable<ReadonlyArrayF>["traverse"] = (G) => (f) => (self) =>
1310
+ self.traverseWithIndex(G)((_, a) => f(a));
1311
+
1312
+ /**
1313
+ * @tsplus pipeable fncts.ReadonlyArray union
1314
+ */
1315
+ export function union<A>(that: ReadonlyArray<A>, /** @tsplus auto */ E: P.Eq<A>) {
1316
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1317
+ return self.concat(that.filter((a) => !self.elem(a, E)));
1318
+ };
1319
+ }
1320
+
1321
+ /**
1322
+ * @tsplus pipeable fncts.ReadonlyArray uniq
1323
+ */
1324
+ export function uniq<A>(/** @tsplus auto */ E: P.Eq<A>) {
1325
+ return (self: ReadonlyArray<A>): ReadonlyArray<A> => {
1326
+ if (self.length === 1) {
1327
+ return self;
1328
+ }
1329
+ const out = [] as Array<A>;
1330
+ const len = self.length;
1331
+ for (let i = 0; i < len; i++) {
1332
+ const a = self[i]!;
1333
+ if (!out.elem(a, E)) {
1334
+ out.push(a);
1335
+ }
1336
+ }
1337
+ return out;
1338
+ };
1339
+ }
1340
+
1341
+ /**
1342
+ * @tsplus getter fncts.ReadonlyArray unprepend
1343
+ */
1344
+ export function unprepend<A>(self: ReadonlyArray<A>): Maybe<readonly [A, ReadonlyArray<A>]> {
1345
+ return self.isNonEmpty() ? Just([self[0]!, self.slice(1)]) : Nothing();
1346
+ }
1347
+
1348
+ /**
1349
+ * @tsplus getter fncts.ReadonlyArray unsafeAsMutable
1350
+ */
1351
+ export function unsafeAsMutable<A>(self: ReadonlyArray<A>): Array<A> {
1352
+ return self as Array<A>;
1353
+ }
1354
+
1355
+ /**
1356
+ * @tsplus pipeable fncts.ReadonlyArray unsafeDeleteAt
1357
+ */
1358
+ export function unsafeDeleteAt(i: number) {
1359
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<A> => {
1360
+ return self.mutate((xs) => {
1361
+ xs.splice(i, 1);
1362
+ });
1363
+ };
1364
+ }
1365
+
1366
+ /**
1367
+ * @tsplus pipeable fncts.ReadonlyArray unsafeInsertAt
1368
+ */
1369
+ export function unsafeInsertAt<A>(i: number, a: A) {
1370
+ return (as: ReadonlyArray<A>): ReadonlyNonEmptyArray<A> => {
1371
+ return as.mutate((xs) => {
1372
+ xs.splice(i, 0, a);
1373
+ }) as unknown as ReadonlyNonEmptyArray<A>;
1374
+ };
1375
+ }
1376
+
1377
+ /**
1378
+ * @tsplus pipeable fncts.ReadonlyArray unsafeModifyAt
1379
+ */
1380
+ export function unsafeModifyAt<A>(i: number, f: (a: A) => A) {
1381
+ return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
1382
+ const next = f(as[i]!);
1383
+ if (as[i] === next) {
1384
+ return as;
1385
+ }
1386
+ return as.mutate((xs) => {
1387
+ xs[i] = next;
1388
+ });
1389
+ };
1390
+ }
1391
+
1392
+ /**
1393
+ * @tsplus pipeable fncts.ReadonlyArray unsafeUpdateAt
1394
+ */
1395
+ export function unsafeUpdateAt<A>(i: number, a: A) {
1396
+ return (as: ReadonlyArray<A>): ReadonlyArray<A> => {
1397
+ if (as[i] === a) {
1398
+ return as;
1399
+ } else {
1400
+ return as.mutate((xs) => {
1401
+ xs[i] = a;
1402
+ });
1403
+ }
1404
+ };
1405
+ }
1406
+
1407
+ /**
1408
+ * @tsplus getter fncts.ReadonlyArray unzip
1409
+ */
1410
+ export function unzip<A, B>(self: ReadonlyArray<readonly [A, B]>): readonly [ReadonlyArray<A>, ReadonlyArray<B>] {
1411
+ const fa = Array<A>(self.length);
1412
+ const fb = Array<B>(self.length);
1413
+
1414
+ for (let i = 0; i < self.length; i++) {
1415
+ fa[i] = self[i]![0]!;
1416
+ fb[i] = self[i]![1]!;
1417
+ }
1418
+
1419
+ return [fa, fb];
1420
+ }
1421
+
1422
+ /**
1423
+ * @tsplus pipeable fncts.ReadonlyArray updateAt
1424
+ */
1425
+ export function updateAt<A>(i: number, a: A) {
1426
+ return (as: ReadonlyArray<A>): Maybe<ReadonlyArray<A>> => {
1427
+ return as.isOutOfBound(i) ? Nothing() : Just(as.unsafeUpdateAt(i, a));
1428
+ };
1429
+ }
1430
+
1431
+ /**
1432
+ * @tsplus getter fncts.ReadonlyArray wilt
1433
+ */
1434
+ export function wilt_<A>(self: ReadonlyArray<A>) {
1435
+ return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
1436
+ <K, Q, W, X, I, S, R, E, B, B2>(
1437
+ f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Either<B, B2>>,
1438
+ ): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, readonly [ReadonlyArray<B>, ReadonlyArray<B2>]> =>
1439
+ self.wiltWithIndex(G)((_, a) => f(a));
1440
+ }
1441
+
1442
+ /**
1443
+ * @tsplus getter fncts.ReadonlyArray wiltWithIndex
1444
+ */
1445
+ export function wiltWithIndex_<A>(self: ReadonlyArray<A>) {
1446
+ return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
1447
+ <K, Q, W, X, I, S, R, E, B, B2>(
1448
+ f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Either<B, B2>>,
1449
+ ): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, readonly [ReadonlyArray<B>, ReadonlyArray<B2>]> =>
1450
+ self
1451
+ .foldLeftWithIndex(G.pure([[] as Array<B>, [] as Array<B2>] as const), (i, fbs, a) =>
1452
+ f(i, a).pipe(
1453
+ G.zipWith(fbs, (eb, r) =>
1454
+ eb.match(
1455
+ (b1) => {
1456
+ r[0].push(b1);
1457
+ return r;
1458
+ },
1459
+ (b2) => {
1460
+ r[1].push(b2);
1461
+ return r;
1462
+ },
1463
+ ),
1464
+ ),
1465
+ ),
1466
+ )
1467
+ .pipe(G.map(([b1s, b2s]) => [b1s, b2s]));
1468
+ }
1469
+
1470
+ /**
1471
+ * @tsplus getter fncts.ReadonlyArray wither
1472
+ */
1473
+ export function wither_<A>(self: ReadonlyArray<A>) {
1474
+ return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
1475
+ <K, Q, W, X, I, S, R, E, B>(
1476
+ f: (a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Maybe<B>>,
1477
+ ): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> =>
1478
+ self.witherWithIndex(G)((_, a) => f(a));
1479
+ }
1480
+
1481
+ /**
1482
+ * @tsplus getter fncts.ReadonlyArray witherWithIndex
1483
+ */
1484
+ export function witherWithIndex_<A>(self: ReadonlyArray<A>) {
1485
+ return <G extends HKT, GC = HKT.None>(G: P.Applicative<G, GC>) =>
1486
+ <K, Q, W, X, I, S, R, E, B>(
1487
+ f: (i: number, a: A) => HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, Maybe<B>>,
1488
+ ): HKT.Kind<G, GC, K, Q, W, X, I, S, R, E, ReadonlyArray<B>> =>
1489
+ self
1490
+ .foldLeftWithIndex(G.pure([] as Array<B>), (i, b, a) =>
1491
+ f(i, a).pipe(
1492
+ G.zipWith(b, (maybeB, bs) => {
1493
+ if (maybeB.isJust()) {
1494
+ bs.push(maybeB.value);
1495
+ }
1496
+ return bs;
1497
+ }),
1498
+ ),
1499
+ )
1500
+ .pipe(G.map((bs) => bs));
1501
+ }
1502
+
1503
+ export const wiltWithIndex: P.WitherableWithIndex<ReadonlyArrayF>["wiltWithIndex"] = (G) => (f) => (self) =>
1504
+ self.wiltWithIndex(G)(f);
1505
+
1506
+ export const wilt: P.WitherableWithIndex<ReadonlyArrayF>["wilt"] = (G) => (f) => (self) =>
1507
+ self.wiltWithIndex(G)((_, a) => f(a));
1508
+
1509
+ export const witherWithIndex: P.WitherableWithIndex<ReadonlyArrayF>["witherWithIndex"] = (G) => (f) => (self) =>
1510
+ self.witherWithIndex(G)(f);
1511
+
1512
+ export const wither: P.Witherable<ReadonlyArrayF>["wither"] = (G) => (f) => (self) =>
1513
+ self.witherWithIndex(G)((_, a) => f(a));
1514
+
1515
+ /**
1516
+ * @tsplus pipeable fncts.ReadonlyArray zip
1517
+ */
1518
+ export function zip<B>(that: ReadonlyArray<B>) {
1519
+ return <A>(self: ReadonlyArray<A>): ReadonlyArray<readonly [A, B]> => {
1520
+ return self.zipWith(that, tuple);
1521
+ };
1522
+ }
1523
+
1524
+ /**
1525
+ * @tsplus pipeable fncts.ReadonlyArray zipWith
1526
+ */
1527
+ export function zipWith<A, B, C>(fb: ReadonlyArray<B>, f: (a: A, b: B) => C) {
1528
+ return (self: ReadonlyArray<A>): ReadonlyArray<C> => {
1529
+ const len = Math.min(self.length, fb.length);
1530
+ const fc = Array<C>(len);
1531
+ for (let i = 0; i < len; i++) {
1532
+ fc[i] = f(self[i]!, fb[i]!);
1533
+ }
1534
+ return fc;
1535
+ };
1536
+ }