@fncts/base 0.0.1 → 0.0.4

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 (830) hide show
  1. package/_cjs/collection/Iterable/api/traverseConc.cjs +21 -15
  2. package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
  3. package/_cjs/collection/Iterable/api.cjs +23 -37
  4. package/_cjs/collection/Iterable/api.cjs.map +1 -1
  5. package/_cjs/collection/Iterable.cjs +3 -3
  6. package/_cjs/collection/compat/Array/api.cjs +1 -1
  7. package/_cjs/collection/compat/Array/api.cjs.map +1 -1
  8. package/_cjs/collection/compat/Array.cjs +2 -2
  9. package/_cjs/collection/immutable/Conc/api.cjs +41 -53
  10. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  11. package/_cjs/collection/immutable/Conc/constructors.cjs +1 -1
  12. package/_cjs/collection/immutable/Conc/definition.cjs +49 -39
  13. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  14. package/_cjs/collection/immutable/Conc.cjs +6 -6
  15. package/_cjs/collection/immutable/Dictionary/definition.cjs +4 -2
  16. package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
  17. package/_cjs/collection/immutable/HashMap/api.cjs +35 -108
  18. package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
  19. package/_cjs/collection/immutable/HashMap/definition.cjs +19 -15
  20. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  21. package/_cjs/collection/immutable/HashMap.cjs +2 -2
  22. package/_cjs/collection/immutable/HashSet/api.cjs +10 -10
  23. package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
  24. package/_cjs/collection/immutable/HashSet.cjs +2 -2
  25. package/_cjs/collection/immutable/ImmutableArray/api.cjs +153 -248
  26. package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
  27. package/_cjs/collection/immutable/ImmutableArray/definition.cjs +12 -10
  28. package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +1 -1
  29. package/_cjs/collection/immutable/ImmutableArray/instances.cjs +153 -157
  30. package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
  31. package/_cjs/collection/immutable/ImmutableArray.cjs +4 -4
  32. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +118 -181
  33. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
  34. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +3 -0
  35. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
  36. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +45 -81
  37. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
  38. package/_cjs/collection/immutable/ImmutableNonEmptyArray.cjs +5 -5
  39. package/_cjs/collection/immutable/List/api.cjs +4 -7
  40. package/_cjs/collection/immutable/List/api.cjs.map +1 -1
  41. package/_cjs/collection/immutable/List/constructors.cjs +1 -1
  42. package/_cjs/collection/immutable/List.cjs +5 -5
  43. package/_cjs/collection/immutable/Queue.cjs +4 -4
  44. package/_cjs/collection/immutable/RoseTree/api.cjs +485 -0
  45. package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -0
  46. package/_cjs/collection/immutable/RoseTree/definition.cjs +58 -0
  47. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -0
  48. package/_cjs/collection/immutable/RoseTree.cjs +32 -0
  49. package/_cjs/collection/immutable/RoseTree.cjs.map +1 -0
  50. package/_cjs/collection/immutable/SortedMap/api.cjs +65 -65
  51. package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
  52. package/_cjs/collection/immutable/SortedMap.cjs +5 -5
  53. package/_cjs/collection/immutable/Vector/api.cjs +70 -15
  54. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  55. package/_cjs/collection/immutable/Vector/definition.cjs +13 -11
  56. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  57. package/_cjs/collection/immutable/Vector.cjs +2 -2
  58. package/_cjs/collection/mutable/HashMap.cjs +5 -5
  59. package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
  60. package/_cjs/collection/mutable/HashSet.cjs +4 -4
  61. package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
  62. package/_cjs/control/Eval/api.cjs +7 -1
  63. package/_cjs/control/Eval/api.cjs.map +1 -1
  64. package/_cjs/control/Eval/definition.cjs +7 -0
  65. package/_cjs/control/Eval/definition.cjs.map +1 -1
  66. package/_cjs/control/Eval/instance.cjs +14 -25
  67. package/_cjs/control/Eval/instance.cjs.map +1 -1
  68. package/_cjs/control/Eval.cjs +5 -5
  69. package/_cjs/control/Z/api.cjs +2 -2
  70. package/_cjs/control/Z/definition.cjs +10 -4
  71. package/_cjs/control/Z/definition.cjs.map +1 -1
  72. package/_cjs/control/Z/instances.cjs +7 -14
  73. package/_cjs/control/Z/instances.cjs.map +1 -1
  74. package/_cjs/control/Z/runtime.cjs +2 -2
  75. package/_cjs/control/Z.cjs +4 -4
  76. package/_cjs/data/Branded/definition.cjs +29 -0
  77. package/_cjs/data/Branded/definition.cjs.map +1 -0
  78. package/_cjs/data/Branded/derivations.cjs +58 -0
  79. package/_cjs/data/Branded/derivations.cjs.map +1 -0
  80. package/_cjs/data/Branded.cjs +32 -0
  81. package/_cjs/data/Branded.cjs.map +1 -0
  82. package/_cjs/data/Cause/api/fold.cjs +2 -0
  83. package/_cjs/data/Cause/api/fold.cjs.map +1 -1
  84. package/_cjs/data/Cause/api/unified.cjs +2 -2
  85. package/_cjs/data/Cause/api.cjs +30 -7
  86. package/_cjs/data/Cause/api.cjs.map +1 -1
  87. package/_cjs/data/Cause/definition.cjs +3 -3
  88. package/_cjs/data/Cause.cjs +2 -2
  89. package/_cjs/data/Const/api.cjs +3 -7
  90. package/_cjs/data/Const/api.cjs.map +1 -1
  91. package/_cjs/data/Const/definition.cjs +19 -1
  92. package/_cjs/data/Const/definition.cjs.map +1 -1
  93. package/_cjs/data/Const/instances.cjs +9 -20
  94. package/_cjs/data/Const/instances.cjs.map +1 -1
  95. package/_cjs/data/Const.cjs +3 -3
  96. package/_cjs/data/DecodeError/definition.cjs +308 -0
  97. package/_cjs/data/DecodeError/definition.cjs.map +1 -0
  98. package/_cjs/data/DecodeError.cjs +19 -0
  99. package/_cjs/data/DecodeError.cjs.map +1 -0
  100. package/_cjs/data/Decoder/api.cjs +217 -0
  101. package/_cjs/data/Decoder/api.cjs.map +1 -0
  102. package/_cjs/data/Decoder/definition.cjs +41 -0
  103. package/_cjs/data/Decoder/definition.cjs.map +1 -0
  104. package/_cjs/data/Decoder.cjs +32 -0
  105. package/_cjs/data/Decoder.cjs.map +1 -0
  106. package/_cjs/data/Duration/api.cjs +22 -9
  107. package/_cjs/data/Duration/api.cjs.map +1 -1
  108. package/_cjs/data/Duration/definition.cjs +1 -1
  109. package/_cjs/data/Duration.cjs +2 -2
  110. package/_cjs/data/Either/api/align.cjs +1 -1
  111. package/_cjs/data/Either/api/alignWith.cjs +2 -0
  112. package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
  113. package/_cjs/data/Either/api.cjs +110 -47
  114. package/_cjs/data/Either/api.cjs.map +1 -1
  115. package/_cjs/data/Either/constructors.cjs +1 -1
  116. package/_cjs/data/Either/definition.cjs +39 -10
  117. package/_cjs/data/Either/definition.cjs.map +1 -1
  118. package/_cjs/data/Either/destructors.cjs +2 -0
  119. package/_cjs/data/Either/destructors.cjs.map +1 -1
  120. package/_cjs/data/Either/instances.cjs +123 -40
  121. package/_cjs/data/Either/instances.cjs.map +1 -1
  122. package/_cjs/data/Either.cjs +5 -5
  123. package/_cjs/data/Environment/api.cjs +29 -8
  124. package/_cjs/data/Environment/api.cjs.map +1 -1
  125. package/_cjs/data/Environment.cjs +2 -2
  126. package/_cjs/data/Exit/api.cjs +1 -1
  127. package/_cjs/data/Exit/constructors.cjs +1 -1
  128. package/_cjs/data/Exit/definition.cjs +2 -2
  129. package/_cjs/data/Exit.cjs +3 -3
  130. package/_cjs/data/FiberId/api.cjs +1 -1
  131. package/_cjs/data/FiberId/constructors.cjs +2 -2
  132. package/_cjs/data/FiberId/definition.cjs +1 -1
  133. package/_cjs/data/FiberId.cjs +3 -3
  134. package/_cjs/data/Identity/api.cjs +35 -6
  135. package/_cjs/data/Identity/api.cjs.map +1 -1
  136. package/_cjs/data/Identity/definition.cjs +10 -1
  137. package/_cjs/data/Identity/definition.cjs.map +1 -1
  138. package/_cjs/data/Identity/instances.cjs +12 -26
  139. package/_cjs/data/Identity/instances.cjs.map +1 -1
  140. package/_cjs/data/Identity.cjs +3 -3
  141. package/_cjs/data/Interval.cjs +154 -0
  142. package/_cjs/data/Interval.cjs.map +1 -0
  143. package/_cjs/data/Maybe/api.cjs +31 -44
  144. package/_cjs/data/Maybe/api.cjs.map +1 -1
  145. package/_cjs/data/Maybe/definition.cjs +46 -19
  146. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  147. package/_cjs/data/Maybe/destructors.cjs +1 -0
  148. package/_cjs/data/Maybe/destructors.cjs.map +1 -1
  149. package/_cjs/data/Maybe/instances.cjs +62 -42
  150. package/_cjs/data/Maybe/instances.cjs.map +1 -1
  151. package/_cjs/data/Maybe.cjs +5 -5
  152. package/_cjs/data/Newtype.cjs +5 -3
  153. package/_cjs/data/Newtype.cjs.map +1 -1
  154. package/_cjs/data/Patch/api.cjs +1 -1
  155. package/_cjs/data/Patch/api.cjs.map +1 -1
  156. package/_cjs/data/Patch.cjs +2 -2
  157. package/_cjs/data/Predicate.cjs +2 -2
  158. package/_cjs/data/Refinement/api.cjs +0 -4
  159. package/_cjs/data/Refinement/api.cjs.map +1 -1
  160. package/_cjs/data/Refinement.cjs +2 -2
  161. package/_cjs/data/Struct/api.cjs +1 -1
  162. package/_cjs/data/Struct/definition.cjs +4 -2
  163. package/_cjs/data/Struct/definition.cjs.map +1 -1
  164. package/_cjs/data/Tag.cjs +2 -2
  165. package/_cjs/data/These/api.cjs +299 -0
  166. package/_cjs/data/These/api.cjs.map +1 -0
  167. package/_cjs/data/These/constructors.cjs +25 -5
  168. package/_cjs/data/These/constructors.cjs.map +1 -1
  169. package/_cjs/data/These/definition.cjs +16 -0
  170. package/_cjs/data/These/definition.cjs.map +1 -1
  171. package/_cjs/data/These/destructors.cjs +70 -0
  172. package/_cjs/data/These/destructors.cjs.map +1 -1
  173. package/_cjs/data/These/instances.cjs +54 -0
  174. package/_cjs/data/These/instances.cjs.map +1 -0
  175. package/_cjs/data/These.cjs +16 -3
  176. package/_cjs/data/These.cjs.map +1 -1
  177. package/_cjs/data/Trace.cjs +3 -3
  178. package/_cjs/data/TraceElement.cjs +1 -1
  179. package/_cjs/data/bigint/definition.cjs +6 -0
  180. package/_cjs/data/bigint/definition.cjs.map +1 -0
  181. package/_cjs/data/bigint/instances.cjs +24 -0
  182. package/_cjs/data/bigint/instances.cjs.map +1 -0
  183. package/_cjs/data/bigint.cjs +32 -0
  184. package/_cjs/data/bigint.cjs.map +1 -0
  185. package/_cjs/data/boolean/definition.cjs +6 -0
  186. package/_cjs/data/boolean/definition.cjs.map +1 -0
  187. package/_cjs/data/boolean/instances.cjs +24 -0
  188. package/_cjs/data/boolean/instances.cjs.map +1 -0
  189. package/_cjs/data/boolean.cjs +32 -0
  190. package/_cjs/data/boolean.cjs.map +1 -0
  191. package/_cjs/data/exceptions/InterruptedException.cjs +1 -1
  192. package/_cjs/data/exceptions.cjs +7 -7
  193. package/_cjs/data/function.cjs +3 -3
  194. package/_cjs/data/number/instances.cjs +19 -6
  195. package/_cjs/data/number/instances.cjs.map +1 -1
  196. package/_cjs/data/number.cjs +3 -3
  197. package/_cjs/data/object/instances.cjs +24 -0
  198. package/_cjs/data/object/instances.cjs.map +1 -0
  199. package/_cjs/data/object.cjs +1 -1
  200. package/_cjs/data/string/instances.cjs +25 -10
  201. package/_cjs/data/string/instances.cjs.map +1 -1
  202. package/_cjs/data/string.cjs +3 -3
  203. package/_cjs/internal/AtomicBoolean.cjs +1 -1
  204. package/_cjs/internal/AtomicNumber.cjs +1 -1
  205. package/_cjs/internal/Stack.cjs +4 -0
  206. package/_cjs/internal/Stack.cjs.map +1 -1
  207. package/_cjs/json/EitherJson.cjs +33 -0
  208. package/_cjs/json/EitherJson.cjs.map +1 -0
  209. package/_cjs/json/MaybeJson.cjs +31 -0
  210. package/_cjs/json/MaybeJson.cjs.map +1 -0
  211. package/_cjs/json/TheseJson.cjs +37 -0
  212. package/_cjs/json/TheseJson.cjs.map +1 -0
  213. package/_cjs/optics/At.cjs +2 -2
  214. package/_cjs/optics/Fold.cjs +1 -1
  215. package/_cjs/optics/Getter.cjs +1 -1
  216. package/_cjs/optics/Index.cjs +2 -2
  217. package/_cjs/optics/Iso.cjs +2 -2
  218. package/_cjs/optics/Lens.cjs +2 -2
  219. package/_cjs/optics/Optional/definition.cjs +6 -4
  220. package/_cjs/optics/Optional/definition.cjs.map +1 -1
  221. package/_cjs/optics/Optional.cjs +2 -2
  222. package/_cjs/optics/Prism.cjs +4 -4
  223. package/_cjs/optics/Setter.cjs +1 -1
  224. package/_cjs/optics/Traversal/api/compose.cjs +1 -1
  225. package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
  226. package/_cjs/optics/Traversal/api/fromTraversable.cjs +4 -4
  227. package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
  228. package/_cjs/optics/Traversal/definition.cjs +17 -12
  229. package/_cjs/optics/Traversal/definition.cjs.map +1 -1
  230. package/_cjs/optics/Traversal.cjs +3 -3
  231. package/_cjs/typeclass/Align.cjs +0 -20
  232. package/_cjs/typeclass/Align.cjs.map +1 -1
  233. package/_cjs/typeclass/Alt.cjs +5 -15
  234. package/_cjs/typeclass/Alt.cjs.map +1 -1
  235. package/_cjs/typeclass/Alternative.cjs +0 -23
  236. package/_cjs/typeclass/Alternative.cjs.map +1 -1
  237. package/_cjs/typeclass/Applicative.cjs +0 -22
  238. package/_cjs/typeclass/Applicative.cjs.map +1 -1
  239. package/_cjs/typeclass/ApplicativeExcept.cjs +40 -34
  240. package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
  241. package/_cjs/typeclass/Apply.cjs +93 -49
  242. package/_cjs/typeclass/Apply.cjs.map +1 -1
  243. package/_cjs/typeclass/Chain.cjs +40 -17
  244. package/_cjs/typeclass/Chain.cjs.map +1 -1
  245. package/_cjs/typeclass/Closure.cjs +1 -4
  246. package/_cjs/typeclass/Closure.cjs.map +1 -1
  247. package/_cjs/typeclass/Eq/definition.cjs +18 -0
  248. package/_cjs/typeclass/Eq/definition.cjs.map +1 -0
  249. package/_cjs/typeclass/Eq/derivations.cjs +59 -0
  250. package/_cjs/typeclass/Eq/derivations.cjs.map +1 -0
  251. package/_cjs/typeclass/Eq.cjs +11 -13
  252. package/_cjs/typeclass/Eq.cjs.map +1 -1
  253. package/_cjs/typeclass/Equatable.cjs +3 -3
  254. package/_cjs/typeclass/Fail.cjs +6 -12
  255. package/_cjs/typeclass/Fail.cjs.map +1 -1
  256. package/_cjs/typeclass/Filterable.cjs +31 -18
  257. package/_cjs/typeclass/Filterable.cjs.map +1 -1
  258. package/_cjs/typeclass/FilterableWithIndex.cjs +0 -26
  259. package/_cjs/typeclass/FilterableWithIndex.cjs.map +1 -1
  260. package/_cjs/typeclass/Foldable.cjs +33 -19
  261. package/_cjs/typeclass/Foldable.cjs.map +1 -1
  262. package/_cjs/typeclass/FoldableWithIndex.cjs +33 -21
  263. package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
  264. package/_cjs/typeclass/Functor.cjs +19 -16
  265. package/_cjs/typeclass/Functor.cjs.map +1 -1
  266. package/_cjs/typeclass/FunctorWithIndex.cjs +0 -21
  267. package/_cjs/typeclass/FunctorWithIndex.cjs.map +1 -1
  268. package/_cjs/typeclass/Guard/api.cjs +40 -0
  269. package/_cjs/typeclass/Guard/api.cjs.map +1 -0
  270. package/_cjs/typeclass/Guard/definition.cjs +40 -0
  271. package/_cjs/typeclass/Guard/definition.cjs.map +1 -0
  272. package/_cjs/typeclass/Guard/derivations.cjs +85 -0
  273. package/_cjs/typeclass/Guard/derivations.cjs.map +1 -0
  274. package/_cjs/typeclass/Guard.cjs +32 -0
  275. package/_cjs/typeclass/Guard.cjs.map +1 -0
  276. package/_cjs/typeclass/HashEq.cjs +3 -3
  277. package/_cjs/typeclass/HashEq.cjs.map +1 -1
  278. package/_cjs/typeclass/Hashable.cjs +2 -2
  279. package/_cjs/typeclass/Monad.cjs +0 -22
  280. package/_cjs/typeclass/Monad.cjs.map +1 -1
  281. package/_cjs/typeclass/MonadExcept.cjs +12 -19
  282. package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
  283. package/_cjs/typeclass/Monoid.cjs +56 -2
  284. package/_cjs/typeclass/Monoid.cjs.map +1 -1
  285. package/_cjs/typeclass/Nil.cjs +10 -0
  286. package/_cjs/typeclass/Nil.cjs.map +1 -1
  287. package/_cjs/typeclass/Ord/api/contramap.cjs +2 -4
  288. package/_cjs/typeclass/Ord/api/contramap.cjs.map +1 -1
  289. package/_cjs/typeclass/Ord/api/max.cjs +1 -1
  290. package/_cjs/typeclass/Ord/api/max.cjs.map +1 -1
  291. package/_cjs/typeclass/Ord/api/min.cjs +1 -1
  292. package/_cjs/typeclass/Ord/api/min.cjs.map +1 -1
  293. package/_cjs/typeclass/Ord/api.cjs +3 -3
  294. package/_cjs/typeclass/Ord/definition.cjs +2 -3
  295. package/_cjs/typeclass/Ord/definition.cjs.map +1 -1
  296. package/_cjs/typeclass/Ord/instances.cjs +7 -7
  297. package/_cjs/typeclass/Ord/instances.cjs.map +1 -1
  298. package/_cjs/typeclass/Ord.cjs +3 -3
  299. package/_cjs/typeclass/Pointed.cjs +6 -11
  300. package/_cjs/typeclass/Pointed.cjs.map +1 -1
  301. package/_cjs/typeclass/Semialign.cjs +77 -94
  302. package/_cjs/typeclass/Semialign.cjs.map +1 -1
  303. package/_cjs/typeclass/Semigroup/api.cjs +2 -2
  304. package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
  305. package/_cjs/typeclass/Semigroup/definition.cjs.map +1 -1
  306. package/_cjs/typeclass/Semigroup/derivations.cjs +63 -0
  307. package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -0
  308. package/_cjs/typeclass/Semigroup.cjs +2 -2
  309. package/_cjs/typeclass/Semimonoidal.cjs +9 -13
  310. package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
  311. package/_cjs/typeclass/Showable/show.cjs +11 -11
  312. package/_cjs/typeclass/Showable/show.cjs.map +1 -1
  313. package/_cjs/typeclass/Showable.cjs +2 -2
  314. package/_cjs/typeclass/Traversable.cjs +26 -34
  315. package/_cjs/typeclass/Traversable.cjs.map +1 -1
  316. package/_cjs/typeclass/TraversableWithIndex.cjs +7 -38
  317. package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
  318. package/_cjs/typeclass/Witherable.cjs +41 -42
  319. package/_cjs/typeclass/Witherable.cjs.map +1 -1
  320. package/_cjs/typeclass/WitherableWithIndex.cjs +41 -50
  321. package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
  322. package/_cjs/typeclass/builtin.cjs +1 -1
  323. package/_cjs/typeclass.cjs +49 -36
  324. package/_cjs/typeclass.cjs.map +1 -1
  325. package/_cjs/types.cjs +3 -3
  326. package/_cjs/util/predicates.cjs +5 -0
  327. package/_cjs/util/predicates.cjs.map +1 -1
  328. package/_mjs/collection/Iterable/api/traverseConc.mjs +20 -15
  329. package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
  330. package/_mjs/collection/Iterable/api.mjs +21 -31
  331. package/_mjs/collection/Iterable/api.mjs.map +1 -1
  332. package/_mjs/collection/compat/Array/api.mjs +1 -1
  333. package/_mjs/collection/compat/Array/api.mjs.map +1 -1
  334. package/_mjs/collection/immutable/Conc/api.mjs +35 -36
  335. package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
  336. package/_mjs/collection/immutable/Conc/definition.mjs +48 -39
  337. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  338. package/_mjs/collection/immutable/Dictionary/definition.mjs +3 -2
  339. package/_mjs/collection/immutable/Dictionary/definition.mjs.map +1 -1
  340. package/_mjs/collection/immutable/HashMap/api.mjs +26 -66
  341. package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
  342. package/_mjs/collection/immutable/HashMap/definition.mjs +18 -15
  343. package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
  344. package/_mjs/collection/immutable/HashSet/api.mjs +5 -5
  345. package/_mjs/collection/immutable/HashSet/api.mjs.map +1 -1
  346. package/_mjs/collection/immutable/ImmutableArray/api.mjs +135 -177
  347. package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
  348. package/_mjs/collection/immutable/ImmutableArray/definition.mjs +11 -10
  349. package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +1 -1
  350. package/_mjs/collection/immutable/ImmutableArray/instances.mjs +151 -138
  351. package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
  352. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +108 -142
  353. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
  354. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +2 -0
  355. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
  356. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +46 -67
  357. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
  358. package/_mjs/collection/immutable/List/api.mjs +4 -5
  359. package/_mjs/collection/immutable/List/api.mjs.map +1 -1
  360. package/_mjs/collection/immutable/RoseTree/api.mjs +447 -0
  361. package/_mjs/collection/immutable/RoseTree/api.mjs.map +1 -0
  362. package/_mjs/collection/immutable/RoseTree/definition.mjs +35 -0
  363. package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -0
  364. package/_mjs/collection/immutable/RoseTree.mjs +4 -0
  365. package/_mjs/collection/immutable/RoseTree.mjs.map +1 -0
  366. package/_mjs/collection/immutable/SortedMap/api.mjs +65 -65
  367. package/_mjs/collection/immutable/SortedMap/api.mjs.map +1 -1
  368. package/_mjs/collection/immutable/Vector/api.mjs +59 -15
  369. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  370. package/_mjs/collection/immutable/Vector/definition.mjs +12 -11
  371. package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
  372. package/_mjs/collection/mutable/HashMap.mjs +5 -5
  373. package/_mjs/collection/mutable/HashMap.mjs.map +1 -1
  374. package/_mjs/collection/mutable/HashSet.mjs +4 -4
  375. package/_mjs/collection/mutable/HashSet.mjs.map +1 -1
  376. package/_mjs/control/Eval/api.mjs +5 -2
  377. package/_mjs/control/Eval/api.mjs.map +1 -1
  378. package/_mjs/control/Eval/definition.mjs +1 -0
  379. package/_mjs/control/Eval/definition.mjs.map +1 -1
  380. package/_mjs/control/Eval/instance.mjs +15 -18
  381. package/_mjs/control/Eval/instance.mjs.map +1 -1
  382. package/_mjs/control/Z/definition.mjs +2 -0
  383. package/_mjs/control/Z/definition.mjs.map +1 -1
  384. package/_mjs/control/Z/instances.mjs +7 -8
  385. package/_mjs/control/Z/instances.mjs.map +1 -1
  386. package/_mjs/data/Branded/definition.mjs +18 -0
  387. package/_mjs/data/Branded/definition.mjs.map +1 -0
  388. package/_mjs/data/Branded/derivations.mjs +39 -0
  389. package/_mjs/data/Branded/derivations.mjs.map +1 -0
  390. package/_mjs/data/Branded.mjs +4 -0
  391. package/_mjs/data/Branded.mjs.map +1 -0
  392. package/_mjs/data/Cause/api/fold.mjs +2 -0
  393. package/_mjs/data/Cause/api/fold.mjs.map +1 -1
  394. package/_mjs/data/Cause/api.mjs +20 -0
  395. package/_mjs/data/Cause/api.mjs.map +1 -1
  396. package/_mjs/data/Const/api.mjs +3 -3
  397. package/_mjs/data/Const/api.mjs.map +1 -1
  398. package/_mjs/data/Const/definition.mjs +13 -1
  399. package/_mjs/data/Const/definition.mjs.map +1 -1
  400. package/_mjs/data/Const/instances.mjs +7 -15
  401. package/_mjs/data/Const/instances.mjs.map +1 -1
  402. package/_mjs/data/DecodeError/definition.mjs +226 -0
  403. package/_mjs/data/DecodeError/definition.mjs.map +1 -0
  404. package/_mjs/data/DecodeError.mjs +3 -0
  405. package/_mjs/data/DecodeError.mjs.map +1 -0
  406. package/_mjs/data/Decoder/api.mjs +179 -0
  407. package/_mjs/data/Decoder/api.mjs.map +1 -0
  408. package/_mjs/data/Decoder/definition.mjs +24 -0
  409. package/_mjs/data/Decoder/definition.mjs.map +1 -0
  410. package/_mjs/data/Decoder.mjs +4 -0
  411. package/_mjs/data/Decoder.mjs.map +1 -0
  412. package/_mjs/data/Duration/api.mjs +17 -8
  413. package/_mjs/data/Duration/api.mjs.map +1 -1
  414. package/_mjs/data/Either/api/alignWith.mjs +2 -0
  415. package/_mjs/data/Either/api/alignWith.mjs.map +1 -1
  416. package/_mjs/data/Either/api.mjs +91 -21
  417. package/_mjs/data/Either/api.mjs.map +1 -1
  418. package/_mjs/data/Either/definition.mjs +25 -5
  419. package/_mjs/data/Either/definition.mjs.map +1 -1
  420. package/_mjs/data/Either/destructors.mjs +2 -0
  421. package/_mjs/data/Either/destructors.mjs.map +1 -1
  422. package/_mjs/data/Either/instances.mjs +109 -39
  423. package/_mjs/data/Either/instances.mjs.map +1 -1
  424. package/_mjs/data/Environment/api.mjs +23 -7
  425. package/_mjs/data/Environment/api.mjs.map +1 -1
  426. package/_mjs/data/Identity/api.mjs +24 -5
  427. package/_mjs/data/Identity/api.mjs.map +1 -1
  428. package/_mjs/data/Identity/definition.mjs +3 -1
  429. package/_mjs/data/Identity/definition.mjs.map +1 -1
  430. package/_mjs/data/Identity/instances.mjs +12 -18
  431. package/_mjs/data/Identity/instances.mjs.map +1 -1
  432. package/_mjs/data/Interval.mjs +114 -0
  433. package/_mjs/data/Interval.mjs.map +1 -0
  434. package/_mjs/data/Maybe/api.mjs +30 -35
  435. package/_mjs/data/Maybe/api.mjs.map +1 -1
  436. package/_mjs/data/Maybe/definition.mjs +37 -14
  437. package/_mjs/data/Maybe/definition.mjs.map +1 -1
  438. package/_mjs/data/Maybe/destructors.mjs +1 -0
  439. package/_mjs/data/Maybe/destructors.mjs.map +1 -1
  440. package/_mjs/data/Maybe/instances.mjs +56 -39
  441. package/_mjs/data/Maybe/instances.mjs.map +1 -1
  442. package/_mjs/data/Newtype.mjs +4 -3
  443. package/_mjs/data/Newtype.mjs.map +1 -1
  444. package/_mjs/data/Patch/api.mjs +1 -1
  445. package/_mjs/data/Patch/api.mjs.map +1 -1
  446. package/_mjs/data/Refinement/api.mjs +0 -4
  447. package/_mjs/data/Refinement/api.mjs.map +1 -1
  448. package/_mjs/data/Struct/definition.mjs +3 -2
  449. package/_mjs/data/Struct/definition.mjs.map +1 -1
  450. package/_mjs/data/These/api.mjs +262 -0
  451. package/_mjs/data/These/api.mjs.map +1 -0
  452. package/_mjs/data/These/constructors.mjs +14 -2
  453. package/_mjs/data/These/constructors.mjs.map +1 -1
  454. package/_mjs/data/These/definition.mjs +8 -0
  455. package/_mjs/data/These/definition.mjs.map +1 -1
  456. package/_mjs/data/These/destructors.mjs +53 -0
  457. package/_mjs/data/These/destructors.mjs.map +1 -1
  458. package/_mjs/data/These/instances.mjs +36 -0
  459. package/_mjs/data/These/instances.mjs.map +1 -0
  460. package/_mjs/data/These.mjs +1 -0
  461. package/_mjs/data/These.mjs.map +1 -1
  462. package/_mjs/data/bigint/definition.mjs +2 -0
  463. package/_mjs/data/bigint/definition.mjs.map +1 -0
  464. package/_mjs/data/bigint/instances.mjs +10 -0
  465. package/_mjs/data/bigint/instances.mjs.map +1 -0
  466. package/_mjs/data/bigint.mjs +4 -0
  467. package/_mjs/data/bigint.mjs.map +1 -0
  468. package/_mjs/data/boolean/definition.mjs +2 -0
  469. package/_mjs/data/boolean/definition.mjs.map +1 -0
  470. package/_mjs/data/boolean/instances.mjs +10 -0
  471. package/_mjs/data/boolean/instances.mjs.map +1 -0
  472. package/_mjs/data/boolean.mjs +4 -0
  473. package/_mjs/data/boolean.mjs.map +1 -0
  474. package/_mjs/data/number/instances.mjs +14 -4
  475. package/_mjs/data/number/instances.mjs.map +1 -1
  476. package/_mjs/data/object/instances.mjs +10 -0
  477. package/_mjs/data/object/instances.mjs.map +1 -0
  478. package/_mjs/data/string/instances.mjs +20 -8
  479. package/_mjs/data/string/instances.mjs.map +1 -1
  480. package/_mjs/internal/Stack.mjs +4 -0
  481. package/_mjs/internal/Stack.mjs.map +1 -1
  482. package/_mjs/json/EitherJson.mjs +18 -0
  483. package/_mjs/json/EitherJson.mjs.map +1 -0
  484. package/_mjs/json/MaybeJson.mjs +16 -0
  485. package/_mjs/json/MaybeJson.mjs.map +1 -0
  486. package/_mjs/json/TheseJson.mjs +22 -0
  487. package/_mjs/json/TheseJson.mjs.map +1 -0
  488. package/_mjs/optics/Optional/definition.mjs +5 -4
  489. package/_mjs/optics/Optional/definition.mjs.map +1 -1
  490. package/_mjs/optics/Traversal/api/compose.mjs +1 -1
  491. package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
  492. package/_mjs/optics/Traversal/api/fromTraversable.mjs +5 -4
  493. package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
  494. package/_mjs/optics/Traversal/definition.mjs +14 -12
  495. package/_mjs/optics/Traversal/definition.mjs.map +1 -1
  496. package/_mjs/typeclass/Align.mjs +0 -11
  497. package/_mjs/typeclass/Align.mjs.map +1 -1
  498. package/_mjs/typeclass/Alt.mjs +4 -7
  499. package/_mjs/typeclass/Alt.mjs.map +1 -1
  500. package/_mjs/typeclass/Alternative.mjs +0 -13
  501. package/_mjs/typeclass/Alternative.mjs.map +1 -1
  502. package/_mjs/typeclass/Applicative.mjs +0 -12
  503. package/_mjs/typeclass/Applicative.mjs.map +1 -1
  504. package/_mjs/typeclass/ApplicativeExcept.mjs +32 -24
  505. package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
  506. package/_mjs/typeclass/Apply.mjs +85 -42
  507. package/_mjs/typeclass/Apply.mjs.map +1 -1
  508. package/_mjs/typeclass/Chain.mjs +33 -12
  509. package/_mjs/typeclass/Chain.mjs.map +1 -1
  510. package/_mjs/typeclass/Closure.mjs +1 -4
  511. package/_mjs/typeclass/Closure.mjs.map +1 -1
  512. package/_mjs/typeclass/Eq/definition.mjs +9 -0
  513. package/_mjs/typeclass/Eq/definition.mjs.map +1 -0
  514. package/_mjs/typeclass/Eq/derivations.mjs +46 -0
  515. package/_mjs/typeclass/Eq/derivations.mjs.map +1 -0
  516. package/_mjs/typeclass/Eq.mjs +1 -11
  517. package/_mjs/typeclass/Eq.mjs.map +1 -1
  518. package/_mjs/typeclass/Fail.mjs +5 -7
  519. package/_mjs/typeclass/Fail.mjs.map +1 -1
  520. package/_mjs/typeclass/Filterable.mjs +27 -13
  521. package/_mjs/typeclass/Filterable.mjs.map +1 -1
  522. package/_mjs/typeclass/FilterableWithIndex.mjs +0 -16
  523. package/_mjs/typeclass/FilterableWithIndex.mjs.map +1 -1
  524. package/_mjs/typeclass/Foldable.mjs +29 -12
  525. package/_mjs/typeclass/Foldable.mjs.map +1 -1
  526. package/_mjs/typeclass/FoldableWithIndex.mjs +29 -13
  527. package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
  528. package/_mjs/typeclass/Functor.mjs +16 -9
  529. package/_mjs/typeclass/Functor.mjs.map +1 -1
  530. package/_mjs/typeclass/FunctorWithIndex.mjs +0 -12
  531. package/_mjs/typeclass/FunctorWithIndex.mjs.map +1 -1
  532. package/_mjs/typeclass/Guard/api.mjs +23 -0
  533. package/_mjs/typeclass/Guard/api.mjs.map +1 -0
  534. package/_mjs/typeclass/Guard/definition.mjs +23 -0
  535. package/_mjs/typeclass/Guard/definition.mjs.map +1 -0
  536. package/_mjs/typeclass/Guard/derivations.mjs +67 -0
  537. package/_mjs/typeclass/Guard/derivations.mjs.map +1 -0
  538. package/_mjs/typeclass/Guard.mjs +4 -0
  539. package/_mjs/typeclass/Guard.mjs.map +1 -0
  540. package/_mjs/typeclass/HashEq.mjs +3 -3
  541. package/_mjs/typeclass/HashEq.mjs.map +1 -1
  542. package/_mjs/typeclass/Monad.mjs +0 -12
  543. package/_mjs/typeclass/Monad.mjs.map +1 -1
  544. package/_mjs/typeclass/MonadExcept.mjs +9 -13
  545. package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
  546. package/_mjs/typeclass/Monoid.mjs +50 -1
  547. package/_mjs/typeclass/Monoid.mjs.map +1 -1
  548. package/_mjs/typeclass/Nil.mjs +8 -1
  549. package/_mjs/typeclass/Nil.mjs.map +1 -1
  550. package/_mjs/typeclass/Ord/api/contramap.mjs +2 -4
  551. package/_mjs/typeclass/Ord/api/contramap.mjs.map +1 -1
  552. package/_mjs/typeclass/Ord/api/max.mjs +1 -1
  553. package/_mjs/typeclass/Ord/api/max.mjs.map +1 -1
  554. package/_mjs/typeclass/Ord/api/min.mjs +1 -1
  555. package/_mjs/typeclass/Ord/api/min.mjs.map +1 -1
  556. package/_mjs/typeclass/Ord/definition.mjs +2 -3
  557. package/_mjs/typeclass/Ord/definition.mjs.map +1 -1
  558. package/_mjs/typeclass/Ord/instances.mjs +7 -7
  559. package/_mjs/typeclass/Ord/instances.mjs.map +1 -1
  560. package/_mjs/typeclass/Pointed.mjs +5 -4
  561. package/_mjs/typeclass/Pointed.mjs.map +1 -1
  562. package/_mjs/typeclass/Semialign.mjs +67 -74
  563. package/_mjs/typeclass/Semialign.mjs.map +1 -1
  564. package/_mjs/typeclass/Semigroup/api.mjs +2 -2
  565. package/_mjs/typeclass/Semigroup/api.mjs.map +1 -1
  566. package/_mjs/typeclass/Semigroup/definition.mjs.map +1 -1
  567. package/_mjs/typeclass/Semigroup/derivations.mjs +50 -0
  568. package/_mjs/typeclass/Semigroup/derivations.mjs.map +1 -0
  569. package/_mjs/typeclass/Semigroup.mjs +1 -1
  570. package/_mjs/typeclass/Semimonoidal.mjs +8 -6
  571. package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
  572. package/_mjs/typeclass/Showable/show.mjs +11 -11
  573. package/_mjs/typeclass/Showable/show.mjs.map +1 -1
  574. package/_mjs/typeclass/Traversable.mjs +25 -24
  575. package/_mjs/typeclass/Traversable.mjs.map +1 -1
  576. package/_mjs/typeclass/TraversableWithIndex.mjs +6 -24
  577. package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
  578. package/_mjs/typeclass/Witherable.mjs +39 -32
  579. package/_mjs/typeclass/Witherable.mjs.map +1 -1
  580. package/_mjs/typeclass/WitherableWithIndex.mjs +39 -37
  581. package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
  582. package/_mjs/typeclass.mjs +1 -0
  583. package/_mjs/typeclass.mjs.map +1 -1
  584. package/_mjs/util/predicates.mjs +3 -0
  585. package/_mjs/util/predicates.mjs.map +1 -1
  586. package/_src/collection/Iterable/api/traverseConc.ts +21 -29
  587. package/_src/collection/Iterable/api.ts +20 -34
  588. package/_src/collection/compat/Array/api.ts +1 -1
  589. package/_src/collection/immutable/Conc/api.ts +26 -46
  590. package/_src/collection/immutable/Conc/definition.ts +19 -8
  591. package/_src/collection/immutable/Dictionary/definition.ts +1 -1
  592. package/_src/collection/immutable/HashMap/api.ts +24 -81
  593. package/_src/collection/immutable/HashMap/definition.ts +7 -9
  594. package/_src/collection/immutable/HashMap/internal.ts +1 -1
  595. package/_src/collection/immutable/HashSet/api.ts +4 -4
  596. package/_src/collection/immutable/ImmutableArray/api.ts +180 -219
  597. package/_src/collection/immutable/ImmutableArray/definition.ts +6 -8
  598. package/_src/collection/immutable/ImmutableArray/instances.ts +156 -134
  599. package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +87 -158
  600. package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +4 -8
  601. package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +39 -49
  602. package/_src/collection/immutable/List/api.ts +2 -6
  603. package/_src/collection/immutable/RoseTree/api.ts +278 -0
  604. package/_src/collection/immutable/RoseTree/definition.ts +29 -0
  605. package/_src/collection/immutable/RoseTree.ts +4 -0
  606. package/_src/collection/immutable/SortedMap/api.ts +56 -53
  607. package/_src/collection/immutable/Vector/api.ts +57 -17
  608. package/_src/collection/immutable/Vector/definition.ts +10 -0
  609. package/_src/collection/mutable/HashMap.ts +5 -5
  610. package/_src/collection/mutable/HashSet.ts +4 -4
  611. package/_src/control/Eval/api.ts +5 -1
  612. package/_src/control/Eval/definition.ts +5 -8
  613. package/_src/control/Eval/instance.ts +16 -15
  614. package/_src/control/Z/definition.ts +26 -19
  615. package/_src/control/Z/instances.ts +9 -8
  616. package/_src/data/Branded/definition.ts +47 -0
  617. package/_src/data/Branded/derivations.ts +57 -0
  618. package/_src/data/Branded.ts +4 -0
  619. package/_src/data/Cause/api/fold.ts +1 -0
  620. package/_src/data/Cause/api.ts +18 -0
  621. package/_src/data/Const/api.ts +3 -3
  622. package/_src/data/Const/definition.ts +22 -5
  623. package/_src/data/Const/instances.ts +12 -21
  624. package/_src/data/DecodeError/definition.ts +227 -0
  625. package/_src/data/DecodeError.ts +3 -0
  626. package/_src/data/Decoder/api.ts +198 -0
  627. package/_src/data/Decoder/definition.ts +25 -0
  628. package/_src/data/Decoder.ts +4 -0
  629. package/_src/data/Duration/api.ts +21 -14
  630. package/_src/data/Either/api/alignWith.ts +2 -0
  631. package/_src/data/Either/api.ts +85 -30
  632. package/_src/data/Either/definition.ts +41 -19
  633. package/_src/data/Either/destructors.ts +1 -0
  634. package/_src/data/Either/instances.ts +102 -51
  635. package/_src/data/Environment/api.ts +19 -4
  636. package/_src/data/Identity/api.ts +19 -4
  637. package/_src/data/Identity/definition.ts +7 -3
  638. package/_src/data/Identity/instances.ts +15 -8
  639. package/_src/data/Interval.ts +103 -0
  640. package/_src/data/Maybe/api.ts +21 -31
  641. package/_src/data/Maybe/definition.ts +31 -19
  642. package/_src/data/Maybe/destructors.ts +1 -0
  643. package/_src/data/Maybe/instances.ts +61 -34
  644. package/_src/data/Newtype.ts +11 -32
  645. package/_src/data/Patch/api.ts +1 -1
  646. package/_src/data/Refinement/api.ts +4 -2
  647. package/_src/data/Struct/definition.ts +1 -1
  648. package/_src/data/These/api.ts +184 -0
  649. package/_src/data/These/constructors.ts +10 -0
  650. package/_src/data/These/definition.ts +7 -0
  651. package/_src/data/These/destructors.ts +45 -0
  652. package/_src/data/These/instances.ts +43 -0
  653. package/_src/data/These.ts +1 -0
  654. package/_src/data/bigint/definition.ts +13 -0
  655. package/_src/data/bigint/instances.ts +8 -0
  656. package/_src/data/bigint.ts +4 -0
  657. package/_src/data/boolean/definition.ts +13 -0
  658. package/_src/data/boolean/instances.ts +8 -0
  659. package/_src/data/boolean.ts +4 -0
  660. package/_src/data/number/instances.ts +13 -3
  661. package/_src/data/object/instances.ts +7 -0
  662. package/_src/data/string/instances.ts +17 -5
  663. package/_src/internal/Stack.ts +4 -0
  664. package/_src/json/EitherJson.ts +28 -0
  665. package/_src/json/MaybeJson.ts +27 -0
  666. package/_src/json/TheseJson.ts +31 -0
  667. package/_src/optics/Optional/definition.ts +2 -2
  668. package/_src/optics/Traversal/api/compose.ts +1 -1
  669. package/_src/optics/Traversal/api/fromTraversable.ts +15 -41
  670. package/_src/optics/Traversal/definition.ts +21 -23
  671. package/_src/typeclass/Align.ts +4 -18
  672. package/_src/typeclass/Alt.ts +59 -90
  673. package/_src/typeclass/Alternative.ts +4 -20
  674. package/_src/typeclass/Applicative.ts +3 -23
  675. package/_src/typeclass/ApplicativeExcept.ts +94 -193
  676. package/_src/typeclass/Apply.ts +319 -509
  677. package/_src/typeclass/Chain.ts +127 -199
  678. package/_src/typeclass/Closure.ts +4 -20
  679. package/_src/typeclass/Eq/definition.ts +20 -0
  680. package/_src/typeclass/Eq/derivations.ts +61 -0
  681. package/_src/typeclass/Eq.ts +2 -36
  682. package/_src/typeclass/Fail.ts +28 -27
  683. package/_src/typeclass/Filterable.ts +70 -117
  684. package/_src/typeclass/FilterableWithIndex.ts +27 -131
  685. package/_src/typeclass/Foldable.ts +35 -52
  686. package/_src/typeclass/FoldableWithIndex.ts +40 -75
  687. package/_src/typeclass/Functor.ts +21 -59
  688. package/_src/typeclass/FunctorWithIndex.ts +6 -34
  689. package/_src/typeclass/Guard/api.ts +32 -0
  690. package/_src/typeclass/Guard/definition.ts +23 -0
  691. package/_src/typeclass/Guard/derivations.ts +80 -0
  692. package/_src/typeclass/Guard.ts +5 -0
  693. package/_src/typeclass/HashEq.ts +3 -4
  694. package/_src/typeclass/Monad.ts +3 -18
  695. package/_src/typeclass/MonadExcept.ts +9 -32
  696. package/_src/typeclass/Monoid.ts +60 -2
  697. package/_src/typeclass/Nil.ts +26 -17
  698. package/_src/typeclass/Ord/api/contramap.ts +2 -4
  699. package/_src/typeclass/Ord/api/max.ts +1 -1
  700. package/_src/typeclass/Ord/api/min.ts +1 -1
  701. package/_src/typeclass/Ord/definition.ts +3 -19
  702. package/_src/typeclass/Ord/instances.ts +6 -6
  703. package/_src/typeclass/Pointed.ts +29 -25
  704. package/_src/typeclass/Semialign.ts +308 -444
  705. package/_src/typeclass/Semigroup/api.ts +2 -2
  706. package/_src/typeclass/Semigroup/definition.ts +2 -6
  707. package/_src/typeclass/Semigroup/derivations.ts +64 -0
  708. package/_src/typeclass/Semigroup.ts +1 -1
  709. package/_src/typeclass/Semimonoidal.ts +55 -84
  710. package/_src/typeclass/Showable/show.ts +6 -8
  711. package/_src/typeclass/Traversable.ts +67 -157
  712. package/_src/typeclass/TraversableWithIndex.ts +37 -127
  713. package/_src/typeclass/Witherable.ts +120 -279
  714. package/_src/typeclass/WitherableWithIndex.ts +129 -337
  715. package/_src/typeclass.ts +2 -0
  716. package/_src/util/predicates.ts +4 -0
  717. package/collection/Iterable/api/traverseConc.d.ts +6 -4
  718. package/collection/Iterable/api.d.ts +5 -13
  719. package/collection/immutable/Conc/api.d.ts +15 -23
  720. package/collection/immutable/Conc/definition.d.ts +10 -7
  721. package/collection/immutable/Dictionary/definition.d.ts +1 -1
  722. package/collection/immutable/HashMap/api.d.ts +15 -27
  723. package/collection/immutable/HashMap/definition.d.ts +6 -9
  724. package/collection/immutable/HashMap/internal.d.ts +1 -1
  725. package/collection/immutable/ImmutableArray/api.d.ts +42 -94
  726. package/collection/immutable/ImmutableArray/definition.d.ts +6 -8
  727. package/collection/immutable/ImmutableArray/instances.d.ts +86 -17
  728. package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +26 -47
  729. package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +4 -8
  730. package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +1 -1
  731. package/collection/immutable/List/api.d.ts +1 -2
  732. package/collection/immutable/RoseTree/api.d.ts +63 -0
  733. package/collection/immutable/RoseTree/definition.d.ts +23 -0
  734. package/collection/immutable/RoseTree.d.ts +2 -0
  735. package/collection/immutable/SortedMap/api.d.ts +2 -1
  736. package/collection/immutable/Vector/api.d.ts +31 -8
  737. package/collection/immutable/Vector/definition.d.ts +10 -0
  738. package/control/Eval/api.d.ts +1 -0
  739. package/control/Eval/definition.d.ts +5 -8
  740. package/control/Eval/instance.d.ts +4 -1
  741. package/control/Z/definition.d.ts +23 -18
  742. package/control/Z/instances.d.ts +4 -3
  743. package/data/Branded/definition.d.ts +36 -0
  744. package/data/Branded/derivations.d.ts +24 -0
  745. package/data/Branded.d.ts +2 -0
  746. package/data/Cause/api.d.ts +7 -1
  747. package/data/Const/api.d.ts +1 -1
  748. package/data/Const/definition.d.ts +23 -7
  749. package/data/Const/instances.d.ts +4 -12
  750. package/data/DecodeError/definition.d.ts +141 -0
  751. package/data/DecodeError.d.ts +1 -0
  752. package/data/Decoder/api.d.ts +65 -0
  753. package/data/Decoder/definition.d.ts +24 -0
  754. package/data/Decoder.d.ts +2 -0
  755. package/data/Duration/api.d.ts +12 -8
  756. package/data/Either/api.d.ts +29 -17
  757. package/data/Either/definition.d.ts +31 -14
  758. package/data/Either/instances.d.ts +26 -11
  759. package/data/Environment/api.d.ts +5 -0
  760. package/data/Identity/api.d.ts +11 -0
  761. package/data/Identity/definition.d.ts +7 -2
  762. package/data/Identity/instances.d.ts +5 -9
  763. package/data/Interval.d.ts +71 -0
  764. package/data/Maybe/api.d.ts +3 -17
  765. package/data/Maybe/definition.d.ts +20 -14
  766. package/data/Maybe/instances.d.ts +14 -8
  767. package/data/Newtype.d.ts +8 -9
  768. package/data/Refinement/api.d.ts +2 -0
  769. package/data/Struct/definition.d.ts +1 -1
  770. package/data/These/api.d.ts +73 -0
  771. package/data/These/constructors.d.ts +7 -1
  772. package/data/These/definition.d.ts +5 -0
  773. package/data/These/destructors.d.ts +27 -1
  774. package/data/These/instances.d.ts +13 -0
  775. package/data/These.d.ts +1 -0
  776. package/data/bigint/definition.d.ts +13 -0
  777. package/data/bigint/instances.d.ts +7 -0
  778. package/data/bigint.d.ts +2 -0
  779. package/data/boolean/definition.d.ts +13 -0
  780. package/data/boolean/instances.d.ts +7 -0
  781. package/data/boolean.d.ts +2 -0
  782. package/data/number/instances.d.ts +8 -0
  783. package/data/object/instances.d.ts +7 -0
  784. package/data/string/instances.d.ts +10 -0
  785. package/internal/Stack.d.ts +1 -0
  786. package/json/EitherJson.d.ts +24 -0
  787. package/json/MaybeJson.d.ts +23 -0
  788. package/json/TheseJson.d.ts +26 -0
  789. package/optics/Traversal/api/fromTraversable.d.ts +1 -1
  790. package/optics/Traversal/definition.d.ts +4 -9
  791. package/package.json +4 -4
  792. package/typeclass/Align.d.ts +3 -10
  793. package/typeclass/Alt.d.ts +6 -19
  794. package/typeclass/Alternative.d.ts +4 -12
  795. package/typeclass/Applicative.d.ts +3 -12
  796. package/typeclass/ApplicativeExcept.d.ts +14 -39
  797. package/typeclass/Apply.d.ts +41 -72
  798. package/typeclass/Chain.d.ts +18 -28
  799. package/typeclass/Closure.d.ts +2 -12
  800. package/typeclass/Eq/definition.d.ts +17 -0
  801. package/typeclass/Eq/derivations.d.ts +24 -0
  802. package/typeclass/Eq.d.ts +2 -27
  803. package/typeclass/Fail.d.ts +4 -10
  804. package/typeclass/Filterable.d.ts +30 -51
  805. package/typeclass/FilterableWithIndex.d.ts +10 -53
  806. package/typeclass/Foldable.d.ts +19 -31
  807. package/typeclass/FoldableWithIndex.d.ts +20 -33
  808. package/typeclass/Functor.d.ts +11 -22
  809. package/typeclass/FunctorWithIndex.d.ts +3 -19
  810. package/typeclass/Guard/api.d.ts +20 -0
  811. package/typeclass/Guard/definition.d.ts +22 -0
  812. package/typeclass/Guard/derivations.d.ts +36 -0
  813. package/typeclass/Guard.d.ts +2 -0
  814. package/typeclass/HashEq.d.ts +1 -2
  815. package/typeclass/Monad.d.ts +3 -11
  816. package/typeclass/MonadExcept.d.ts +6 -17
  817. package/typeclass/Monoid.d.ts +24 -2
  818. package/typeclass/Nil.d.ts +7 -8
  819. package/typeclass/Ord/definition.d.ts +2 -14
  820. package/typeclass/Pointed.d.ts +4 -10
  821. package/typeclass/Semialign.d.ts +51 -63
  822. package/typeclass/Semigroup/definition.d.ts +3 -5
  823. package/typeclass/Semigroup/derivations.d.ts +25 -0
  824. package/typeclass/Semimonoidal.d.ts +5 -14
  825. package/typeclass/Traversable.d.ts +17 -57
  826. package/typeclass/TraversableWithIndex.d.ts +9 -52
  827. package/typeclass/Witherable.d.ts +22 -82
  828. package/typeclass/WitherableWithIndex.d.ts +26 -98
  829. package/typeclass.d.ts +1 -0
  830. package/util/predicates.d.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable prefer-const */
2
- import type { MutableVector } from "@fncts/base/collection/immutable/Vector/definition";
3
- import type { Eq, Monoid, Ord, Ordering } from "@fncts/base/typeclass";
2
+ import type { MutableVector, VectorF } from "@fncts/base/collection/immutable/Vector/definition";
3
+ import type { Eq, Monoid, Ord, Ordering, Traversable, TraversableWithIndex } from "@fncts/base/typeclass";
4
4
 
5
5
  import {
6
6
  affixPush,
@@ -36,6 +36,7 @@ import {
36
36
  nodeNth,
37
37
  nodeNthDense,
38
38
  prependNodeToTree,
39
+ push,
39
40
  reverseArray,
40
41
  setDepth,
41
42
  setPrefix,
@@ -54,6 +55,7 @@ import {
54
55
  * @complexity O(n)
55
56
  *
56
57
  * @tsplus fluent fncts.Vector append
58
+ * @tsplus operator fncts.Vector +
57
59
  */
58
60
  export function append_<A>(as: Vector<A>, a: A): Vector<A> {
59
61
  const suffixSize = getSuffixSize(as);
@@ -111,6 +113,7 @@ export function chunksOf_<A>(as: Vector<A>, size: number): Vector<Vector<A>> {
111
113
  *
112
114
  * @complexity O(log(n))
113
115
  * @tsplus fluent fncts.Vector concat
116
+ * @tsplus operator fncts.Vector + 1
114
117
  */
115
118
  export function concat_<A, B>(self: Vector<A>, that: Vector<B>): Vector<A | B>;
116
119
  export function concat_<A>(self: Vector<A>, that: Vector<A>): Vector<A> {
@@ -267,7 +270,7 @@ function elemCb(value: any, state: ElemState): boolean {
267
270
  */
268
271
  export function elem_<A>(self: Vector<A>) {
269
272
  return (E: Eq<A>) => {
270
- const elemState: ElemState = { equals: E.equals_, element: undefined, result: false };
273
+ const elemState: ElemState = { equals: E.equals, element: undefined, result: false };
271
274
  return (a: A): boolean => {
272
275
  elemState.element = a;
273
276
  return foldLeftCb(elemCb, elemState, self).result;
@@ -506,21 +509,21 @@ export function foldRightWhile_<A, B>(fa: Vector<A>, b: B, cont: Predicate<B>, f
506
509
  }
507
510
 
508
511
  /**
509
- * @tsplus getter fncts.Vector foldMap
512
+ * @tsplus fluent fncts.Vector foldMap
510
513
  */
511
- export function foldMap_<A>(self: Vector<A>) {
512
- return <M>(M: Monoid<M>) =>
513
- (f: (a: A) => M): M =>
514
- self.foldMapWithIndex(M)((_, a) => f(a));
514
+ export function foldMap_<A, M>(self: Vector<A>, f: (a: A) => M, /** @tsplus auto */ M: Monoid<M>): M {
515
+ return self.foldMapWithIndex((_, a) => f(a), M);
515
516
  }
516
517
 
517
518
  /**
518
- * @tsplus getter fncts.Vector foldMapWithIndex
519
+ * @tsplus fluent fncts.Vector foldMapWithIndex
519
520
  */
520
- export function foldMapWithIndex_<A>(self: Vector<A>) {
521
- return <M>(M: Monoid<M>) =>
522
- (f: (i: number, a: A) => M): M =>
523
- self.foldLeftWithIndex(M.nat, (i, b, a) => M.combine_(b, f(i, a)));
521
+ export function foldMapWithIndex_<A, M>(
522
+ self: Vector<A>,
523
+ f: (i: number, a: A) => M,
524
+ /** @tsplus auto */ M: Monoid<M>,
525
+ ): M {
526
+ return self.foldLeftWithIndex(M.nat, (i, b, a) => M.combine(b, f(i, a)));
524
527
  }
525
528
 
526
529
  /**
@@ -857,6 +860,13 @@ export function prepend_<A>(as: Vector<A>, a: A): Vector<A> {
857
860
  }
858
861
  }
859
862
 
863
+ /**
864
+ * @tsplus operator fncts.Vector +
865
+ */
866
+ export function prependOperator<A>(a: A, as: Vector<A>): Vector<A> {
867
+ return as.prepend(a);
868
+ }
869
+
860
870
  /**
861
871
  * Returns a Vector of numbers between an inclusive lower bound and an exclusive upper bound.
862
872
  *
@@ -900,6 +910,13 @@ export function replicate<A>(n: number, a: A): Vector<A> {
900
910
  return l;
901
911
  }
902
912
 
913
+ /**
914
+ * @tsplus getter fncts.Vector reverse
915
+ */
916
+ export function reverse<A>(self: Vector<A>): Vector<A> {
917
+ return self.foldLeft(Vector.empty(), (vec, elem) => vec.prepend(elem));
918
+ }
919
+
903
920
  /**
904
921
  * Folds a function over a Vector from left to right while collecting
905
922
  * all the intermediate steps in a resulting Vector.
@@ -1039,10 +1056,10 @@ export function slice_<A>(as: Vector<A>, from: number, to: number): Vector<A> {
1039
1056
  }
1040
1057
 
1041
1058
  /**
1042
- * @tsplus getter fncts.Vector sort
1059
+ * @tsplus fluent fncts.Vector sort
1043
1060
  */
1044
- export function sort_<A>(self: Vector<A>) {
1045
- return (O: Ord<A>): Vector<A> => self.sortWith(O.compare_);
1061
+ export function sort_<A>(self: Vector<A>, /** @tsplus auto */ O: Ord<A>): Vector<A> {
1062
+ return self.sortWith(O.compare);
1046
1063
  }
1047
1064
 
1048
1065
  /**
@@ -1183,6 +1200,29 @@ export function toList<A>(self: Vector<A>): List<A> {
1183
1200
  return buffer.toList;
1184
1201
  }
1185
1202
 
1203
+ /**
1204
+ * @tsplus fluent fncts.Vector traverseWithIndex
1205
+ */
1206
+ export const traverseWithIndex: TraversableWithIndex<VectorF>["traverseWithIndex"] = (self, f, G) => {
1207
+ return self.foldLeftWithIndex(G.pure(Vector.emptyPushable()), (i, b, a) =>
1208
+ b.zipWith(
1209
+ f(i, a),
1210
+ (v, b) => {
1211
+ push(v, b);
1212
+ return v;
1213
+ },
1214
+ G,
1215
+ ),
1216
+ );
1217
+ };
1218
+
1219
+ /**
1220
+ * @tsplus fluent fncts.Vector traverse
1221
+ */
1222
+ export const traverse: Traversable<VectorF>["traverse"] = (self, f, G) => {
1223
+ return self.traverseWithIndex((_, a) => f(a));
1224
+ };
1225
+
1186
1226
  /**
1187
1227
  * Returns a new Vector without repeated elements by using the given
1188
1228
  * Eq instance to determine when elements are equal
@@ -1191,7 +1231,7 @@ export function toList<A>(self: Vector<A>): List<A> {
1191
1231
  * @tsplus getter fncts.Vector uniq
1192
1232
  */
1193
1233
  export function uniq<A>(as: Vector<A>) {
1194
- return (E: Eq<A>) => as.dropRepeatsWith(E.equals_);
1234
+ return (E: Eq<A>) => as.dropRepeatsWith(E.equals);
1195
1235
  }
1196
1236
 
1197
1237
  /**
@@ -8,6 +8,8 @@ import { ForwardVectorIterator } from "@fncts/base/collection/immutable/Vector/i
8
8
  export const VectorTypeId = Symbol.for("fncts.Vector");
9
9
  export type VectorTypeId = typeof VectorTypeId;
10
10
 
11
+ export interface VectorF extends Vector<any> {}
12
+
11
13
  /**
12
14
  * Represents a Vector of elements.
13
15
  *
@@ -16,6 +18,10 @@ export type VectorTypeId = typeof VectorTypeId;
16
18
  */
17
19
  export class Vector<A> implements Iterable<A> {
18
20
  readonly _typeId: VectorTypeId = VectorTypeId;
21
+ readonly [HKT.F]!: VectorF;
22
+ readonly [HKT.A]!: () => A;
23
+ readonly [HKT.T]!: Vector<HKT._A<this>>;
24
+ readonly [HKT.Ix]!: number
19
25
  constructor(
20
26
  /** @private */
21
27
  readonly bits: number,
@@ -48,6 +54,10 @@ export class Vector<A> implements Iterable<A> {
48
54
  */
49
55
  export interface MutableVector<A> {
50
56
  readonly _typeId: VectorTypeId;
57
+ readonly [HKT.F]: VectorF;
58
+ readonly [HKT.A]: () => A;
59
+ readonly [HKT.T]: Vector<HKT._A<this>>;
60
+ readonly [HKT.Ix]: number
51
61
  bits: number;
52
62
  offset: number;
53
63
  length: number;
@@ -80,7 +80,7 @@ export class HashMap<K, V> implements Iterable<readonly [K, V]> {
80
80
  let prev: Node<K, V> | undefined = undefined;
81
81
  let nd: Node<K, V> | undefined = n;
82
82
  while (nd) {
83
- if (hash === nd.hash && this.config.equals_(key, nd.key)) {
83
+ if (hash === nd.hash && this.config.equals(key, nd.key)) {
84
84
  previousNode = prev;
85
85
  foundNode = nd;
86
86
  break;
@@ -158,7 +158,7 @@ export class HashMap<K, V> implements Iterable<readonly [K, V]> {
158
158
  const old = n;
159
159
  let prev: Node<K, V> | undefined = undefined;
160
160
  while (n !== undefined && n.hash <= hash) {
161
- if (n.hash === hash && this.config.equals_(key, n.key)) {
161
+ if (n.hash === hash && this.config.equals(key, n.key)) {
162
162
  const old = n.value;
163
163
  n.value = value;
164
164
  if (getOld) return Just(old);
@@ -186,7 +186,7 @@ export class HashMap<K, V> implements Iterable<readonly [K, V]> {
186
186
  const nd = this.table[idx];
187
187
  if (nd === undefined) {
188
188
  return undefined;
189
- } else if (nd.hash === hash && this.config.equals_(nd.key, key)) {
189
+ } else if (nd.hash === hash && this.config.equals(nd.key, key)) {
190
190
  this.table[idx] = nd.next;
191
191
  this.contentSize -= 1;
192
192
  return nd;
@@ -194,7 +194,7 @@ export class HashMap<K, V> implements Iterable<readonly [K, V]> {
194
194
  let prev = nd;
195
195
  let next = nd.next;
196
196
  while (next && next.hash <= hash) {
197
- if (next.hash === hash && this.config.equals_(next.key, key)) {
197
+ if (next.hash === hash && this.config.equals(next.key, key)) {
198
198
  prev.next = next.next;
199
199
  this.contentSize -= 1;
200
200
  return next;
@@ -221,7 +221,7 @@ export class HashMap<K, V> implements Iterable<readonly [K, V]> {
221
221
  private findNode(key: K): Node<K, V> | undefined {
222
222
  const hash = this.computeHash(key);
223
223
  const n = this.table[this.index(hash)];
224
- return n === undefined ? n : n.findNode(key, hash, this.config.equals_);
224
+ return n === undefined ? n : n.findNode(key, hash, this.config.equals);
225
225
  }
226
226
 
227
227
  private growTable(newLen: number) {
@@ -81,7 +81,7 @@ export class HashSet<A> implements Iterable<A> {
81
81
  const old = n;
82
82
  let prev: Node<A> | undefined = undefined;
83
83
  while (n !== undefined && n.hash <= hash) {
84
- if (n.hash === hash && this.config.equals_(elem, n.key)) {
84
+ if (n.hash === hash && this.config.equals(elem, n.key)) {
85
85
  return false;
86
86
  }
87
87
  prev = n;
@@ -102,7 +102,7 @@ export class HashSet<A> implements Iterable<A> {
102
102
  const n = this.table[idx];
103
103
  if (n === undefined) {
104
104
  return false;
105
- } else if (n.hash === hash && this.config.equals_(n.key, elem)) {
105
+ } else if (n.hash === hash && this.config.equals(n.key, elem)) {
106
106
  this.table[idx] = n.next;
107
107
  this.contentSize -= 1;
108
108
  return true;
@@ -110,7 +110,7 @@ export class HashSet<A> implements Iterable<A> {
110
110
  let prev = n;
111
111
  let next = n.next;
112
112
  while (next && next.hash <= hash) {
113
- if (next.hash === hash && this.config.equals_(next.key, elem)) {
113
+ if (next.hash === hash && this.config.equals(next.key, elem)) {
114
114
  prev.next = next.next;
115
115
  this.contentSize -= 1;
116
116
  return true;
@@ -137,7 +137,7 @@ export class HashSet<A> implements Iterable<A> {
137
137
  private findNode(key: A): Node<A> | undefined {
138
138
  const hash = this.computeHash(key);
139
139
  const n = this.table[this.index(hash)];
140
- return n === undefined ? n : n.findNode(key, hash, this.config.equals_);
140
+ return n === undefined ? n : n.findNode(key, hash, this.config.equals);
141
141
  }
142
142
 
143
143
  private growTable(newLen: number) {
@@ -1,7 +1,7 @@
1
1
  import type { _A } from "@fncts/base/types";
2
2
 
3
3
  import { Chain } from "@fncts/base/control/Eval/definition";
4
- import { identity } from "@fncts/base/data/function";
4
+ import { identity, tuple } from "@fncts/base/data/function";
5
5
 
6
6
  /**
7
7
  * @tsplus fluent fncts.control.Eval and
@@ -38,6 +38,10 @@ export function zipWith_<A, B, C>(self: Eval<A>, fb: Eval<B>, f: (a: A, b: B) =>
38
38
  return self.flatMap((a) => fb.map((b) => f(a, b)));
39
39
  }
40
40
 
41
+ export function zip_<A, B>(self: Eval<A>, fb: Eval<B>): Eval<readonly [A, B]> {
42
+ return self.zipWith(fb, tuple);
43
+ }
44
+
41
45
  /**
42
46
  * @tsplus fluent fncts.control.Eval ap
43
47
  */
@@ -1,12 +1,16 @@
1
1
  export const EvalTypeId = Symbol.for("@fncts.base/control/Eval");
2
2
  export type EvalTypeId = typeof EvalTypeId;
3
3
 
4
+ export interface EvalF extends Eval<any> {}
5
+
4
6
  /**
5
7
  * @tsplus type fncts.control.Eval
6
8
  */
7
9
  export interface Eval<A> {
8
10
  readonly _typeId: EvalTypeId;
9
- readonly _A: () => A;
11
+ [HKT.F]?: EvalF;
12
+ [HKT.A]?: () => A;
13
+ [HKT.T]?: Eval<HKT._A<this>>;
10
14
  }
11
15
 
12
16
  /**
@@ -58,10 +62,3 @@ export function concrete(_: Eval<any>): asserts _ is Concrete {
58
62
  export function unifyEval<X extends Eval<any>>(self: X): Eval<[X] extends [Eval<infer A>] ? A : never> {
59
63
  return self;
60
64
  }
61
-
62
- export interface EvalF extends HKT {
63
- readonly type: Eval<this["A"]>;
64
- readonly variance: {
65
- readonly A: "-";
66
- };
67
- }
@@ -1,31 +1,32 @@
1
1
  import type { EvalF } from "@fncts/base/control/Eval/definition";
2
+ import type * as P from "@fncts/base/typeclass";
2
3
 
3
- import { ap_, map_, zipWith_ } from "@fncts/base/control/Eval/api";
4
+ import { ap_, map_, zip_, zipWith_ } from "@fncts/base/control/Eval/api";
4
5
  import { now } from "@fncts/base/control/Eval/constructors";
5
- import * as P from "@fncts/base/typeclass";
6
6
 
7
7
  /**
8
8
  * @tsplus static fncts.control.EvalOps Functor
9
+ * @tsplus implicit
9
10
  */
10
- export const Functor: P.Functor<EvalF> = P.Functor({
11
- map_,
12
- });
11
+ export const Functor: P.Functor<EvalF> = {
12
+ map: map_,
13
+ };
13
14
 
14
15
  /**
15
16
  * @tsplus static fncts.control.EvalOps Apply
17
+ * @tsplus implicit
16
18
  */
17
- export const Apply: P.Apply<EvalF> = P.Apply({
18
- map_,
19
- ap_,
20
- zipWith_,
21
- });
19
+ export const Apply: P.Apply<EvalF> = {
20
+ map: map_,
21
+ zip: zip_,
22
+ zipWith: zipWith_,
23
+ };
22
24
 
23
25
  /**
24
26
  * @tsplus static fncts.control.EvalOps Applicative
27
+ * @tsplus implicit
25
28
  */
26
- export const Applicative: P.Applicative<EvalF> = P.Applicative({
27
- map_,
28
- ap_,
29
- zipWith_,
29
+ export const Applicative: P.Applicative<EvalF> = {
30
+ ...Apply,
30
31
  pure: now,
31
- });
32
+ };
@@ -1,17 +1,8 @@
1
- import type { _A, _E, _R, _S1, _S2, _W } from "../../types.js";
2
-
3
1
  import { hasTypeId } from "../../util/predicates.js";
4
2
 
5
- export interface ZF extends HKT {
6
- readonly type: Z<this["W"], this["S"], this["S"], this["R"], this["E"], this["A"]>;
7
- readonly variance: {
8
- readonly W: "_";
9
- readonly S: "_";
10
- readonly R: "-";
11
- readonly E: "+";
12
- readonly A: "+";
13
- };
14
- }
3
+ export interface ZF extends Z<any, any, any, any, any, any> {}
4
+
5
+ export interface ZFixedF extends ZFixed<any, any, any, any, any> {}
15
6
 
16
7
  export const ZTypeId = Symbol.for("@principia/base/Z");
17
8
  export type ZTypeId = typeof ZTypeId;
@@ -31,18 +22,34 @@ export type ZTypeId = typeof ZTypeId;
31
22
  */
32
23
  export abstract class Z<W, S1, S2, R, E, A> {
33
24
  readonly _typeId: ZTypeId = ZTypeId;
34
- readonly _W!: () => W;
35
- readonly _S1!: (_: S1) => void;
36
- readonly _S2!: () => S2;
37
- readonly _R!: (_: R) => void;
38
- readonly _E!: () => E;
39
- readonly _A!: () => A;
25
+ readonly [HKT.F]!: ZF;
26
+ readonly [HKT.W]!: () => W;
27
+ readonly [HKT.Q]!: (_: S1) => void;
28
+ readonly [HKT.S]!: () => S2;
29
+ readonly [HKT.R]!: (_: R) => void;
30
+ readonly [HKT.E]!: () => E;
31
+ readonly [HKT.A]!: () => A;
32
+ readonly [HKT.T]!: Z<HKT._W<this>, HKT._Q<this>, HKT._S<this>, HKT._R<this>, HKT._E<this>, HKT._A<this>>;
33
+ }
34
+
35
+ export interface ZFixed<W, S, R, E, A> {
36
+ readonly _typeId: ZTypeId;
37
+ readonly [HKT.F]: ZF;
38
+ readonly [HKT.W]: () => W;
39
+ readonly [HKT.Q]: (_: S) => void;
40
+ readonly [HKT.S]: () => S;
41
+ readonly [HKT.R]: (_: R) => void;
42
+ readonly [HKT.E]: () => E;
43
+ readonly [HKT.A]: () => A;
44
+ readonly [HKT.T]: Z<HKT._W<this>, HKT._S<this>, HKT._S<this>, HKT._R<this>, HKT._E<this>, HKT._A<this>>;
40
45
  }
41
46
 
42
47
  /**
43
48
  * @tsplus unify fncts.control.Z
44
49
  */
45
- export function unifyZ<X extends Z<any, any, any, any, any, any>>(_: X): Z<_W<X>, _S1<X>, _S2<X>, _R<X>, _E<X>, _A<X>> {
50
+ export function unifyZ<X extends Z<any, any, any, any, any, any>>(
51
+ _: X,
52
+ ): Z<HKT._W<X>, HKT._Q<X>, HKT._S<X>, HKT._R<X>, HKT._E<X>, HKT._A<X>> {
46
53
  return _;
47
54
  }
48
55
 
@@ -1,14 +1,15 @@
1
- import type { ZF } from "./definition.js";
1
+ import type * as P from "../../typeclass.js";
2
+ import type { ZFixedF } from "./definition.js";
2
3
 
3
- import * as P from "../../typeclass.js";
4
- import { ap_, crossWith_, map_, succeedNow } from "./api.js";
4
+ import { map_, succeedNow, zip_, zipWith_ } from "./api.js";
5
5
 
6
6
  /**
7
7
  * @tsplus static fncts.control.ZOps Applicative
8
+ * @tsplus implicit
8
9
  */
9
- export const Applicative: P.Applicative<ZF> = P.Applicative({
10
- map_,
11
- ap_,
12
- zipWith_: crossWith_,
10
+ export const Applicative: P.Applicative<ZFixedF> = {
11
+ map: map_,
12
+ zip: zip_,
13
+ zipWith: zipWith_,
13
14
  pure: succeedNow,
14
- });
15
+ };
@@ -0,0 +1,47 @@
1
+ import type { Union } from "@fncts/typelevel";
2
+
3
+ type Brand_<A, K extends string> = Brand<A, K>;
4
+
5
+ export declare namespace Branded {
6
+ const Symbol: unique symbol;
7
+ export type Symbol = typeof Symbol;
8
+
9
+ export interface Brand<A, K extends string> {
10
+ readonly [Branded.Symbol]: {
11
+ [_ in K]: A;
12
+ };
13
+ }
14
+
15
+ export type Type<A extends Brand_<any, any>> = [A] extends [Brand_<infer A, infer K>] ? Validated<A, K> : never;
16
+
17
+ export type Validated<A, K extends string> = A & Brand<A, K>;
18
+
19
+ export type IsValidated<P extends Brand<any, any>> = {
20
+ [K in keyof P[Branded.Symbol]]: P extends P[Branded.Symbol][K] ? 0 : 1
21
+ }[keyof P[Branded.Symbol]] extends 0 ? unknown : never;
22
+
23
+ export type Unbrand<P extends Brand<any, any>> = P extends infer Q & Brands<P> ? Q : P;
24
+
25
+ export type Brands<P extends Brand<any, any>> = Union.IntersectionOf<{
26
+ [K in keyof P[Branded.Symbol]]: P extends P[Branded.Symbol][K]
27
+ ? K extends string
28
+ ? Brand<P[Branded.Symbol][K], K>
29
+ : never
30
+ : never;
31
+ }[keyof P[Branded.Symbol]]>;
32
+ }
33
+
34
+ /**
35
+ * @tsplus type fncts.Brand
36
+ * @tsplus companion fncts.BrandOps
37
+ */
38
+ export class Brand<A, K extends string> {
39
+ constructor(readonly validate: Refinement<A, A & Branded.Brand<A, K>>) {}
40
+ }
41
+
42
+ /**
43
+ * @tsplus static fncts.BrandOps __call
44
+ */
45
+ export function makeBrand<A, K extends string>(p: Predicate<A>): Brand<A, K> {
46
+ return new Brand(p as Refinement<A, A & Branded.Brand<A, K>>);
47
+ }
@@ -0,0 +1,57 @@
1
+ import type { Brand, Branded } from "@fncts/base/data/Branded/definition";
2
+ import type { Check } from "@fncts/typelevel/Check";
3
+
4
+ import { BrandedError, CompoundError } from "@fncts/base/data/DecodeError";
5
+ import { Decoder } from "@fncts/base/data/Decoder/definition";
6
+
7
+ /**
8
+ * @tsplus derive fncts.Guard<_> 10
9
+ */
10
+ export function deriveGuard<A extends Branded.Brand<any, any>>(
11
+ ...[base, brands]: Check<Branded.IsValidated<A>> extends Check.True
12
+ ? [
13
+ base: Guard<Branded.Unbrand<A>>,
14
+ brands: {
15
+ [K in keyof A[Branded.Symbol] & string]: Brand<A[Branded.Symbol][K], K>;
16
+ }
17
+ ]
18
+ : never
19
+ ): Guard<A> {
20
+ const validations = Object.values(brands) as ReadonlyArray<Brand<A, any>>;
21
+ return Guard((u): u is A => base.is(u) && validations.every((brand) => brand.validate(u)));
22
+ }
23
+
24
+ /**
25
+ * @tsplus derive fncts.Decoder<_> 10
26
+ */
27
+ export function deriveDecoder<A extends Branded.Brand<any, any>>(
28
+ ...[base, brands]: Check<Branded.IsValidated<A>> extends Check.True
29
+ ? [
30
+ base: Decoder<Branded.Unbrand<A>>,
31
+ brands: {
32
+ [K in keyof A[Branded.Symbol] & string]: Brand<A[Branded.Symbol][K], K>;
33
+ },
34
+ ]
35
+ : never
36
+ ): Decoder<A> {
37
+ const label = "Brand<" + Object.keys(brands).join(" & ") + ">";
38
+ return Decoder((u) => base.decode(u).match2(
39
+ These.left,
40
+ (warning, value) => {
41
+ const failedBrands: Array<string> = [];
42
+ for (const brand in brands) {
43
+ if (!brands[brand]!.validate(value as any)) {
44
+ failedBrands.push(brand);
45
+ }
46
+ }
47
+ if (failedBrands.length > 0) {
48
+ const error = new BrandedError(label, Vector.from(failedBrands));
49
+ return warning.match(
50
+ () => These.left(error),
51
+ (warning) => These.left(new CompoundError(label, Vector(warning, error)))
52
+ );
53
+ }
54
+ return These.rightOrBoth(warning, value);
55
+ }
56
+ ), label);
57
+ }
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./Branded/*.ts }
2
+ export * from "./Branded/definition.js";
3
+ export * from "./Branded/derivations.js";
4
+ // codegen:end
@@ -56,6 +56,7 @@ function foldLoop<E, Z>(
56
56
  }
57
57
  } else {
58
58
  return out.foldLeft(List.empty(), (acc, v) => {
59
+ Either.concrete(v);
59
60
  if (v.isRight()) {
60
61
  return acc.prepend(v.right);
61
62
  } else {
@@ -218,6 +218,7 @@ export function filterDefects_<E>(self: Cause<E>, p: Predicate<unknown>): Maybe<
218
218
  */
219
219
  function findLoop<A, B>(self: Cause<A>, f: (cause: Cause<A>) => Maybe<B>, stack: List<Cause<A>>): Maybe<B> {
220
220
  const r = f(self);
221
+ Maybe.concrete(r);
221
222
  switch (r._tag) {
222
223
  case MaybeTag.Nothing: {
223
224
  switch (self._tag) {
@@ -630,6 +631,15 @@ export function isThen<E>(self: Cause<E>): self is Then<E> {
630
631
  return self._tag === CauseTag.Then;
631
632
  }
632
633
 
634
+ /**
635
+ * A type-guard matching `Interrupt`
636
+ *
637
+ * @tsplus fluent fncts.Cause isInterrupt
638
+ */
639
+ export function isInterrupt<E>(self: Cause<E>): self is Interrupt {
640
+ return self._tag === CauseTag.Interrupt;
641
+ }
642
+
633
643
  /**
634
644
  * A type-guard matching `Traced`
635
645
  *
@@ -799,6 +809,8 @@ function sequenceCauseEitherEval<E, A>(self: Cause<Either<E, A>>): Eval<Either<C
799
809
  return Eval.defer(() => sequenceCauseEitherEval(self.left)).zipWith(
800
810
  Eval.defer(() => sequenceCauseEitherEval(self.right)),
801
811
  (lefts, rights) => {
812
+ Either.concrete(lefts);
813
+ Either.concrete(rights);
802
814
  return lefts._tag === "Left"
803
815
  ? rights._tag === "Right"
804
816
  ? Either.right(rights.right)
@@ -811,6 +823,8 @@ function sequenceCauseEitherEval<E, A>(self: Cause<Either<E, A>>): Eval<Either<C
811
823
  return Eval.defer(() => sequenceCauseEitherEval(self.left)).zipWith(
812
824
  Eval.defer(() => sequenceCauseEitherEval(self.right)),
813
825
  (lefts, rights) => {
826
+ Either.concrete(lefts);
827
+ Either.concrete(rights);
814
828
  return lefts._tag === "Left"
815
829
  ? rights._tag === "Right"
816
830
  ? Either.right(rights.right)
@@ -854,6 +868,8 @@ function sequenceCauseMaybeEval<E>(self: Cause<Maybe<E>>): Eval<Maybe<Cause<E>>>
854
868
  return Eval.defer(() => sequenceCauseMaybeEval(self.left)).zipWith(
855
869
  Eval.defer(() => sequenceCauseMaybeEval(self.right)),
856
870
  (lefts, rights) => {
871
+ Maybe.concrete(lefts);
872
+ Maybe.concrete(rights);
857
873
  return lefts._tag === "Just"
858
874
  ? rights._tag === "Just"
859
875
  ? Maybe.just(Cause.then(lefts.value, rights.value))
@@ -868,6 +884,8 @@ function sequenceCauseMaybeEval<E>(self: Cause<Maybe<E>>): Eval<Maybe<Cause<E>>>
868
884
  return Eval.defer(() => sequenceCauseMaybeEval(self.left)).zipWith(
869
885
  Eval.defer(() => sequenceCauseMaybeEval(self.right)),
870
886
  (lefts, rights) => {
887
+ Maybe.concrete(lefts);
888
+ Maybe.concrete(rights);
871
889
  return lefts._tag === "Just"
872
890
  ? rights._tag === "Just"
873
891
  ? Maybe.just(Cause.both(lefts.value, rights.value))
@@ -1,10 +1,10 @@
1
- import type { Const } from "./definition.js";
1
+ import { Const } from "./definition.js";
2
2
 
3
3
  /**
4
4
  * @tsplus fluent fncts.Const map
5
5
  */
6
6
  export function map_<E, A, B>(self: Const<E, A>, _f: (a: A) => B): Const<E, B> {
7
- return unsafeCoerce(self);
7
+ return new Const(self.getConst);
8
8
  }
9
9
 
10
10
  /**
@@ -12,5 +12,5 @@ export function map_<E, A, B>(self: Const<E, A>, _f: (a: A) => B): Const<E, B> {
12
12
  * @tsplus static fncts.ConstOps __call
13
13
  */
14
14
  export function mkConst<E, A = never>(e: E): Const<E, A> {
15
- return unsafeCoerce(e);
15
+ return new Const(e);
16
16
  }