@fncts/base 0.0.3 → 0.0.6

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 (812) 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/compat/Array/api.cjs +1 -1
  6. package/_cjs/collection/compat/Array/api.cjs.map +1 -1
  7. package/_cjs/collection/immutable/Conc/api.cjs +41 -53
  8. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  9. package/_cjs/collection/immutable/Conc/definition.cjs +49 -39
  10. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  11. package/_cjs/collection/immutable/Dictionary/definition.cjs +4 -2
  12. package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
  13. package/_cjs/collection/immutable/HashMap/api.cjs +35 -108
  14. package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
  15. package/_cjs/collection/immutable/HashMap/definition.cjs +19 -15
  16. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  17. package/_cjs/collection/immutable/HashSet/api.cjs +10 -10
  18. package/_cjs/collection/immutable/HashSet/api.cjs.map +1 -1
  19. package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs +22 -0
  20. package/_cjs/collection/immutable/ImmutableArray/api/chunksOf.cjs.map +1 -0
  21. package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs +20 -0
  22. package/_cjs/collection/immutable/ImmutableArray/api/slice.cjs.map +1 -0
  23. package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs +20 -0
  24. package/_cjs/collection/immutable/ImmutableArray/api/splitAt.cjs.map +1 -0
  25. package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs +33 -0
  26. package/_cjs/collection/immutable/ImmutableArray/api/splitWhere.cjs.map +1 -0
  27. package/_cjs/collection/immutable/ImmutableArray/api.cjs +252 -409
  28. package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
  29. package/_cjs/collection/immutable/ImmutableArray/definition.cjs +12 -10
  30. package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +1 -1
  31. package/_cjs/collection/immutable/ImmutableArray/instances.cjs +153 -157
  32. package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
  33. package/_cjs/collection/immutable/ImmutableArray.cjs +52 -0
  34. package/_cjs/collection/immutable/ImmutableArray.cjs.map +1 -1
  35. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +125 -184
  36. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
  37. package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs +2 -4
  38. package/_cjs/collection/immutable/ImmutableNonEmptyArray/constructors.cjs.map +1 -1
  39. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +25 -2
  40. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
  41. package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs +5 -3
  42. package/_cjs/collection/immutable/ImmutableNonEmptyArray/destructors.cjs.map +1 -1
  43. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +45 -81
  44. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
  45. package/_cjs/collection/immutable/List/api.cjs +4 -7
  46. package/_cjs/collection/immutable/List/api.cjs.map +1 -1
  47. package/_cjs/collection/immutable/RoseTree/api.cjs +484 -0
  48. package/_cjs/collection/immutable/RoseTree/api.cjs.map +1 -0
  49. package/_cjs/collection/immutable/RoseTree/definition.cjs +58 -0
  50. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -0
  51. package/_cjs/collection/immutable/RoseTree.cjs +32 -0
  52. package/_cjs/collection/immutable/RoseTree.cjs.map +1 -0
  53. package/_cjs/collection/immutable/SortedMap/api.cjs +65 -65
  54. package/_cjs/collection/immutable/SortedMap/api.cjs.map +1 -1
  55. package/_cjs/collection/immutable/Vector/api.cjs +70 -15
  56. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  57. package/_cjs/collection/immutable/Vector/definition.cjs +13 -11
  58. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  59. package/_cjs/collection/mutable/HashMap.cjs +5 -5
  60. package/_cjs/collection/mutable/HashMap.cjs.map +1 -1
  61. package/_cjs/collection/mutable/HashSet.cjs +4 -4
  62. package/_cjs/collection/mutable/HashSet.cjs.map +1 -1
  63. package/_cjs/control/Eval/api.cjs +6 -0
  64. package/_cjs/control/Eval/api.cjs.map +1 -1
  65. package/_cjs/control/Eval/definition.cjs +7 -0
  66. package/_cjs/control/Eval/definition.cjs.map +1 -1
  67. package/_cjs/control/Eval/instance.cjs +14 -25
  68. package/_cjs/control/Eval/instance.cjs.map +1 -1
  69. package/_cjs/control/Z/definition.cjs +9 -3
  70. package/_cjs/control/Z/definition.cjs.map +1 -1
  71. package/_cjs/control/Z/instances.cjs +6 -13
  72. package/_cjs/control/Z/instances.cjs.map +1 -1
  73. package/_cjs/data/Branded/definition.cjs +29 -0
  74. package/_cjs/data/Branded/definition.cjs.map +1 -0
  75. package/_cjs/data/Branded/derivations.cjs +58 -0
  76. package/_cjs/data/Branded/derivations.cjs.map +1 -0
  77. package/_cjs/data/Branded.cjs +32 -0
  78. package/_cjs/data/Branded.cjs.map +1 -0
  79. package/_cjs/data/CaseClass.cjs +4 -2
  80. package/_cjs/data/CaseClass.cjs.map +1 -1
  81. package/_cjs/data/Cause/api/fold.cjs +2 -0
  82. package/_cjs/data/Cause/api/fold.cjs.map +1 -1
  83. package/_cjs/data/Cause/api.cjs +23 -0
  84. package/_cjs/data/Cause/api.cjs.map +1 -1
  85. package/_cjs/data/Const/api.cjs +3 -7
  86. package/_cjs/data/Const/api.cjs.map +1 -1
  87. package/_cjs/data/Const/definition.cjs +19 -1
  88. package/_cjs/data/Const/definition.cjs.map +1 -1
  89. package/_cjs/data/Const/instances.cjs +9 -20
  90. package/_cjs/data/Const/instances.cjs.map +1 -1
  91. package/_cjs/data/DecodeError/definition.cjs +308 -0
  92. package/_cjs/data/DecodeError/definition.cjs.map +1 -0
  93. package/_cjs/data/DecodeError.cjs +19 -0
  94. package/_cjs/data/DecodeError.cjs.map +1 -0
  95. package/_cjs/data/Decoder/api.cjs +217 -0
  96. package/_cjs/data/Decoder/api.cjs.map +1 -0
  97. package/_cjs/data/Decoder/definition.cjs +41 -0
  98. package/_cjs/data/Decoder/definition.cjs.map +1 -0
  99. package/_cjs/data/Decoder.cjs +32 -0
  100. package/_cjs/data/Decoder.cjs.map +1 -0
  101. package/_cjs/data/Duration/api.cjs +22 -9
  102. package/_cjs/data/Duration/api.cjs.map +1 -1
  103. package/_cjs/data/Either/api/alignWith.cjs +2 -0
  104. package/_cjs/data/Either/api/alignWith.cjs.map +1 -1
  105. package/_cjs/data/Either/api.cjs +105 -42
  106. package/_cjs/data/Either/api.cjs.map +1 -1
  107. package/_cjs/data/Either/definition.cjs +39 -10
  108. package/_cjs/data/Either/definition.cjs.map +1 -1
  109. package/_cjs/data/Either/destructors.cjs +2 -0
  110. package/_cjs/data/Either/destructors.cjs.map +1 -1
  111. package/_cjs/data/Either/instances.cjs +123 -40
  112. package/_cjs/data/Either/instances.cjs.map +1 -1
  113. package/_cjs/data/Environment/api.cjs +29 -8
  114. package/_cjs/data/Environment/api.cjs.map +1 -1
  115. package/_cjs/data/Identity/api.cjs +35 -6
  116. package/_cjs/data/Identity/api.cjs.map +1 -1
  117. package/_cjs/data/Identity/definition.cjs +10 -1
  118. package/_cjs/data/Identity/definition.cjs.map +1 -1
  119. package/_cjs/data/Identity/instances.cjs +11 -25
  120. package/_cjs/data/Identity/instances.cjs.map +1 -1
  121. package/_cjs/data/Interval.cjs +154 -0
  122. package/_cjs/data/Interval.cjs.map +1 -0
  123. package/_cjs/data/Maybe/api.cjs +30 -43
  124. package/_cjs/data/Maybe/api.cjs.map +1 -1
  125. package/_cjs/data/Maybe/definition.cjs +45 -18
  126. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  127. package/_cjs/data/Maybe/destructors.cjs +1 -0
  128. package/_cjs/data/Maybe/destructors.cjs.map +1 -1
  129. package/_cjs/data/Maybe/instances.cjs +62 -42
  130. package/_cjs/data/Maybe/instances.cjs.map +1 -1
  131. package/_cjs/data/Newtype.cjs +5 -3
  132. package/_cjs/data/Newtype.cjs.map +1 -1
  133. package/_cjs/data/Patch/api.cjs +1 -1
  134. package/_cjs/data/Patch/api.cjs.map +1 -1
  135. package/_cjs/data/Refinement/api.cjs +0 -4
  136. package/_cjs/data/Refinement/api.cjs.map +1 -1
  137. package/_cjs/data/Struct/definition.cjs +4 -2
  138. package/_cjs/data/Struct/definition.cjs.map +1 -1
  139. package/_cjs/data/These/api.cjs +299 -0
  140. package/_cjs/data/These/api.cjs.map +1 -0
  141. package/_cjs/data/These/constructors.cjs +24 -4
  142. package/_cjs/data/These/constructors.cjs.map +1 -1
  143. package/_cjs/data/These/definition.cjs +16 -0
  144. package/_cjs/data/These/definition.cjs.map +1 -1
  145. package/_cjs/data/These/destructors.cjs +70 -0
  146. package/_cjs/data/These/destructors.cjs.map +1 -1
  147. package/_cjs/data/These/instances.cjs +54 -0
  148. package/_cjs/data/These/instances.cjs.map +1 -0
  149. package/_cjs/data/These.cjs +13 -0
  150. package/_cjs/data/These.cjs.map +1 -1
  151. package/_cjs/data/bigint/definition.cjs +6 -0
  152. package/_cjs/data/bigint/definition.cjs.map +1 -0
  153. package/_cjs/data/bigint/instances.cjs +24 -0
  154. package/_cjs/data/bigint/instances.cjs.map +1 -0
  155. package/_cjs/data/bigint.cjs +32 -0
  156. package/_cjs/data/bigint.cjs.map +1 -0
  157. package/_cjs/data/boolean/definition.cjs +6 -0
  158. package/_cjs/data/boolean/definition.cjs.map +1 -0
  159. package/_cjs/data/boolean/instances.cjs +24 -0
  160. package/_cjs/data/boolean/instances.cjs.map +1 -0
  161. package/_cjs/data/boolean.cjs +32 -0
  162. package/_cjs/data/boolean.cjs.map +1 -0
  163. package/_cjs/data/number/instances.cjs +18 -5
  164. package/_cjs/data/number/instances.cjs.map +1 -1
  165. package/_cjs/data/object/instances.cjs +24 -0
  166. package/_cjs/data/object/instances.cjs.map +1 -0
  167. package/_cjs/data/string/instances.cjs +24 -9
  168. package/_cjs/data/string/instances.cjs.map +1 -1
  169. package/_cjs/internal/Stack.cjs +4 -0
  170. package/_cjs/internal/Stack.cjs.map +1 -1
  171. package/_cjs/json/EitherJson.cjs +33 -0
  172. package/_cjs/json/EitherJson.cjs.map +1 -0
  173. package/_cjs/json/MaybeJson.cjs +31 -0
  174. package/_cjs/json/MaybeJson.cjs.map +1 -0
  175. package/_cjs/json/TheseJson.cjs +37 -0
  176. package/_cjs/json/TheseJson.cjs.map +1 -0
  177. package/_cjs/optics/Optional/definition.cjs +6 -4
  178. package/_cjs/optics/Optional/definition.cjs.map +1 -1
  179. package/_cjs/optics/Traversal/api/compose.cjs +1 -1
  180. package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
  181. package/_cjs/optics/Traversal/api/fromTraversable.cjs +4 -4
  182. package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
  183. package/_cjs/optics/Traversal/definition.cjs +17 -12
  184. package/_cjs/optics/Traversal/definition.cjs.map +1 -1
  185. package/_cjs/typeclass/Align.cjs +0 -20
  186. package/_cjs/typeclass/Align.cjs.map +1 -1
  187. package/_cjs/typeclass/Alt.cjs +5 -15
  188. package/_cjs/typeclass/Alt.cjs.map +1 -1
  189. package/_cjs/typeclass/Alternative.cjs +0 -23
  190. package/_cjs/typeclass/Alternative.cjs.map +1 -1
  191. package/_cjs/typeclass/Applicative.cjs +0 -22
  192. package/_cjs/typeclass/Applicative.cjs.map +1 -1
  193. package/_cjs/typeclass/ApplicativeExcept.cjs +40 -34
  194. package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
  195. package/_cjs/typeclass/Apply.cjs +93 -49
  196. package/_cjs/typeclass/Apply.cjs.map +1 -1
  197. package/_cjs/typeclass/Chain.cjs +40 -17
  198. package/_cjs/typeclass/Chain.cjs.map +1 -1
  199. package/_cjs/typeclass/Closure.cjs +1 -4
  200. package/_cjs/typeclass/Closure.cjs.map +1 -1
  201. package/_cjs/typeclass/Eq/definition.cjs +18 -0
  202. package/_cjs/typeclass/Eq/definition.cjs.map +1 -0
  203. package/_cjs/typeclass/Eq/derivations.cjs +59 -0
  204. package/_cjs/typeclass/Eq/derivations.cjs.map +1 -0
  205. package/_cjs/typeclass/Eq.cjs +11 -13
  206. package/_cjs/typeclass/Eq.cjs.map +1 -1
  207. package/_cjs/typeclass/Fail.cjs +6 -12
  208. package/_cjs/typeclass/Fail.cjs.map +1 -1
  209. package/_cjs/typeclass/Filterable.cjs +31 -18
  210. package/_cjs/typeclass/Filterable.cjs.map +1 -1
  211. package/_cjs/typeclass/FilterableWithIndex.cjs +0 -26
  212. package/_cjs/typeclass/FilterableWithIndex.cjs.map +1 -1
  213. package/_cjs/typeclass/Foldable.cjs +33 -19
  214. package/_cjs/typeclass/Foldable.cjs.map +1 -1
  215. package/_cjs/typeclass/FoldableWithIndex.cjs +33 -21
  216. package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
  217. package/_cjs/typeclass/Functor.cjs +19 -16
  218. package/_cjs/typeclass/Functor.cjs.map +1 -1
  219. package/_cjs/typeclass/FunctorWithIndex.cjs +0 -21
  220. package/_cjs/typeclass/FunctorWithIndex.cjs.map +1 -1
  221. package/_cjs/typeclass/Guard/api.cjs +40 -0
  222. package/_cjs/typeclass/Guard/api.cjs.map +1 -0
  223. package/_cjs/typeclass/Guard/definition.cjs +40 -0
  224. package/_cjs/typeclass/Guard/definition.cjs.map +1 -0
  225. package/_cjs/typeclass/Guard/derivations.cjs +85 -0
  226. package/_cjs/typeclass/Guard/derivations.cjs.map +1 -0
  227. package/_cjs/typeclass/Guard.cjs +32 -0
  228. package/_cjs/typeclass/Guard.cjs.map +1 -0
  229. package/_cjs/typeclass/HashEq.cjs +3 -3
  230. package/_cjs/typeclass/HashEq.cjs.map +1 -1
  231. package/_cjs/typeclass/Monad.cjs +0 -22
  232. package/_cjs/typeclass/Monad.cjs.map +1 -1
  233. package/_cjs/typeclass/MonadExcept.cjs +12 -19
  234. package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
  235. package/_cjs/typeclass/Monoid.cjs +56 -2
  236. package/_cjs/typeclass/Monoid.cjs.map +1 -1
  237. package/_cjs/typeclass/Nil.cjs +10 -0
  238. package/_cjs/typeclass/Nil.cjs.map +1 -1
  239. package/_cjs/typeclass/Ord/api/contramap.cjs +2 -4
  240. package/_cjs/typeclass/Ord/api/contramap.cjs.map +1 -1
  241. package/_cjs/typeclass/Ord/api/max.cjs +1 -1
  242. package/_cjs/typeclass/Ord/api/max.cjs.map +1 -1
  243. package/_cjs/typeclass/Ord/api/min.cjs +1 -1
  244. package/_cjs/typeclass/Ord/api/min.cjs.map +1 -1
  245. package/_cjs/typeclass/Ord/definition.cjs +2 -3
  246. package/_cjs/typeclass/Ord/definition.cjs.map +1 -1
  247. package/_cjs/typeclass/Ord/instances.cjs +7 -7
  248. package/_cjs/typeclass/Ord/instances.cjs.map +1 -1
  249. package/_cjs/typeclass/Pointed.cjs +6 -11
  250. package/_cjs/typeclass/Pointed.cjs.map +1 -1
  251. package/_cjs/typeclass/Semialign.cjs +77 -94
  252. package/_cjs/typeclass/Semialign.cjs.map +1 -1
  253. package/_cjs/typeclass/Semigroup/api.cjs +2 -2
  254. package/_cjs/typeclass/Semigroup/api.cjs.map +1 -1
  255. package/_cjs/typeclass/Semigroup/definition.cjs.map +1 -1
  256. package/_cjs/typeclass/Semigroup/derivations.cjs +63 -0
  257. package/_cjs/typeclass/Semigroup/derivations.cjs.map +1 -0
  258. package/_cjs/typeclass/Semimonoidal.cjs +9 -13
  259. package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
  260. package/_cjs/typeclass/Showable/show.cjs +11 -11
  261. package/_cjs/typeclass/Showable/show.cjs.map +1 -1
  262. package/_cjs/typeclass/Traversable.cjs +26 -34
  263. package/_cjs/typeclass/Traversable.cjs.map +1 -1
  264. package/_cjs/typeclass/TraversableWithIndex.cjs +7 -38
  265. package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
  266. package/_cjs/typeclass/Witherable.cjs +41 -42
  267. package/_cjs/typeclass/Witherable.cjs.map +1 -1
  268. package/_cjs/typeclass/WitherableWithIndex.cjs +41 -50
  269. package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
  270. package/_cjs/typeclass.cjs +13 -0
  271. package/_cjs/typeclass.cjs.map +1 -1
  272. package/_cjs/util/predicates.cjs +5 -0
  273. package/_cjs/util/predicates.cjs.map +1 -1
  274. package/_mjs/collection/Iterable/api/traverseConc.mjs +20 -15
  275. package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
  276. package/_mjs/collection/Iterable/api.mjs +21 -31
  277. package/_mjs/collection/Iterable/api.mjs.map +1 -1
  278. package/_mjs/collection/compat/Array/api.mjs +1 -1
  279. package/_mjs/collection/compat/Array/api.mjs.map +1 -1
  280. package/_mjs/collection/immutable/Conc/api.mjs +35 -36
  281. package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
  282. package/_mjs/collection/immutable/Conc/definition.mjs +48 -39
  283. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  284. package/_mjs/collection/immutable/Dictionary/definition.mjs +3 -2
  285. package/_mjs/collection/immutable/Dictionary/definition.mjs.map +1 -1
  286. package/_mjs/collection/immutable/HashMap/api.mjs +26 -66
  287. package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
  288. package/_mjs/collection/immutable/HashMap/definition.mjs +18 -15
  289. package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
  290. package/_mjs/collection/immutable/HashSet/api.mjs +5 -5
  291. package/_mjs/collection/immutable/HashSet/api.mjs.map +1 -1
  292. package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs +10 -0
  293. package/_mjs/collection/immutable/ImmutableArray/api/chunksOf.mjs.map +1 -0
  294. package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs +9 -0
  295. package/_mjs/collection/immutable/ImmutableArray/api/slice.mjs.map +1 -0
  296. package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs +9 -0
  297. package/_mjs/collection/immutable/ImmutableArray/api/splitAt.mjs.map +1 -0
  298. package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs +21 -0
  299. package/_mjs/collection/immutable/ImmutableArray/api/splitWhere.mjs.map +1 -0
  300. package/_mjs/collection/immutable/ImmutableArray/api.mjs +229 -326
  301. package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
  302. package/_mjs/collection/immutable/ImmutableArray/definition.mjs +11 -10
  303. package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +1 -1
  304. package/_mjs/collection/immutable/ImmutableArray/instances.mjs +151 -138
  305. package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
  306. package/_mjs/collection/immutable/ImmutableArray.mjs +7 -1
  307. package/_mjs/collection/immutable/ImmutableArray.mjs.map +1 -1
  308. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +113 -145
  309. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
  310. package/_mjs/collection/immutable/ImmutableNonEmptyArray/constructors.mjs +7 -7
  311. package/_mjs/collection/immutable/ImmutableNonEmptyArray/constructors.mjs.map +1 -1
  312. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +20 -2
  313. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
  314. package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs +4 -3
  315. package/_mjs/collection/immutable/ImmutableNonEmptyArray/destructors.mjs.map +1 -1
  316. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +46 -67
  317. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
  318. package/_mjs/collection/immutable/List/api.mjs +4 -5
  319. package/_mjs/collection/immutable/List/api.mjs.map +1 -1
  320. package/_mjs/collection/immutable/RoseTree/api.mjs +447 -0
  321. package/_mjs/collection/immutable/RoseTree/api.mjs.map +1 -0
  322. package/_mjs/collection/immutable/RoseTree/definition.mjs +35 -0
  323. package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -0
  324. package/_mjs/collection/immutable/RoseTree.mjs +4 -0
  325. package/_mjs/collection/immutable/RoseTree.mjs.map +1 -0
  326. package/_mjs/collection/immutable/SortedMap/api.mjs +65 -65
  327. package/_mjs/collection/immutable/SortedMap/api.mjs.map +1 -1
  328. package/_mjs/collection/immutable/Vector/api.mjs +59 -15
  329. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  330. package/_mjs/collection/immutable/Vector/definition.mjs +12 -11
  331. package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
  332. package/_mjs/collection/mutable/HashMap.mjs +5 -5
  333. package/_mjs/collection/mutable/HashMap.mjs.map +1 -1
  334. package/_mjs/collection/mutable/HashSet.mjs +4 -4
  335. package/_mjs/collection/mutable/HashSet.mjs.map +1 -1
  336. package/_mjs/control/Eval/api.mjs +5 -2
  337. package/_mjs/control/Eval/api.mjs.map +1 -1
  338. package/_mjs/control/Eval/definition.mjs +1 -0
  339. package/_mjs/control/Eval/definition.mjs.map +1 -1
  340. package/_mjs/control/Eval/instance.mjs +15 -18
  341. package/_mjs/control/Eval/instance.mjs.map +1 -1
  342. package/_mjs/control/Z/definition.mjs +2 -0
  343. package/_mjs/control/Z/definition.mjs.map +1 -1
  344. package/_mjs/control/Z/instances.mjs +7 -8
  345. package/_mjs/control/Z/instances.mjs.map +1 -1
  346. package/_mjs/data/Branded/definition.mjs +18 -0
  347. package/_mjs/data/Branded/definition.mjs.map +1 -0
  348. package/_mjs/data/Branded/derivations.mjs +39 -0
  349. package/_mjs/data/Branded/derivations.mjs.map +1 -0
  350. package/_mjs/data/Branded.mjs +4 -0
  351. package/_mjs/data/Branded.mjs.map +1 -0
  352. package/_mjs/data/CaseClass.mjs +3 -2
  353. package/_mjs/data/CaseClass.mjs.map +1 -1
  354. package/_mjs/data/Cause/api/fold.mjs +2 -0
  355. package/_mjs/data/Cause/api/fold.mjs.map +1 -1
  356. package/_mjs/data/Cause/api.mjs +20 -0
  357. package/_mjs/data/Cause/api.mjs.map +1 -1
  358. package/_mjs/data/Const/api.mjs +3 -3
  359. package/_mjs/data/Const/api.mjs.map +1 -1
  360. package/_mjs/data/Const/definition.mjs +13 -1
  361. package/_mjs/data/Const/definition.mjs.map +1 -1
  362. package/_mjs/data/Const/instances.mjs +7 -15
  363. package/_mjs/data/Const/instances.mjs.map +1 -1
  364. package/_mjs/data/DecodeError/definition.mjs +226 -0
  365. package/_mjs/data/DecodeError/definition.mjs.map +1 -0
  366. package/_mjs/data/DecodeError.mjs +3 -0
  367. package/_mjs/data/DecodeError.mjs.map +1 -0
  368. package/_mjs/data/Decoder/api.mjs +179 -0
  369. package/_mjs/data/Decoder/api.mjs.map +1 -0
  370. package/_mjs/data/Decoder/definition.mjs +24 -0
  371. package/_mjs/data/Decoder/definition.mjs.map +1 -0
  372. package/_mjs/data/Decoder.mjs +4 -0
  373. package/_mjs/data/Decoder.mjs.map +1 -0
  374. package/_mjs/data/Duration/api.mjs +17 -8
  375. package/_mjs/data/Duration/api.mjs.map +1 -1
  376. package/_mjs/data/Either/api/alignWith.mjs +2 -0
  377. package/_mjs/data/Either/api/alignWith.mjs.map +1 -1
  378. package/_mjs/data/Either/api.mjs +91 -21
  379. package/_mjs/data/Either/api.mjs.map +1 -1
  380. package/_mjs/data/Either/definition.mjs +25 -5
  381. package/_mjs/data/Either/definition.mjs.map +1 -1
  382. package/_mjs/data/Either/destructors.mjs +2 -0
  383. package/_mjs/data/Either/destructors.mjs.map +1 -1
  384. package/_mjs/data/Either/instances.mjs +109 -39
  385. package/_mjs/data/Either/instances.mjs.map +1 -1
  386. package/_mjs/data/Environment/api.mjs +23 -7
  387. package/_mjs/data/Environment/api.mjs.map +1 -1
  388. package/_mjs/data/Identity/api.mjs +24 -5
  389. package/_mjs/data/Identity/api.mjs.map +1 -1
  390. package/_mjs/data/Identity/definition.mjs +3 -1
  391. package/_mjs/data/Identity/definition.mjs.map +1 -1
  392. package/_mjs/data/Identity/instances.mjs +12 -18
  393. package/_mjs/data/Identity/instances.mjs.map +1 -1
  394. package/_mjs/data/Interval.mjs +114 -0
  395. package/_mjs/data/Interval.mjs.map +1 -0
  396. package/_mjs/data/Maybe/api.mjs +30 -35
  397. package/_mjs/data/Maybe/api.mjs.map +1 -1
  398. package/_mjs/data/Maybe/definition.mjs +37 -14
  399. package/_mjs/data/Maybe/definition.mjs.map +1 -1
  400. package/_mjs/data/Maybe/destructors.mjs +1 -0
  401. package/_mjs/data/Maybe/destructors.mjs.map +1 -1
  402. package/_mjs/data/Maybe/instances.mjs +56 -39
  403. package/_mjs/data/Maybe/instances.mjs.map +1 -1
  404. package/_mjs/data/Newtype.mjs +4 -3
  405. package/_mjs/data/Newtype.mjs.map +1 -1
  406. package/_mjs/data/Patch/api.mjs +1 -1
  407. package/_mjs/data/Patch/api.mjs.map +1 -1
  408. package/_mjs/data/Refinement/api.mjs +0 -4
  409. package/_mjs/data/Refinement/api.mjs.map +1 -1
  410. package/_mjs/data/Struct/definition.mjs +3 -2
  411. package/_mjs/data/Struct/definition.mjs.map +1 -1
  412. package/_mjs/data/These/api.mjs +262 -0
  413. package/_mjs/data/These/api.mjs.map +1 -0
  414. package/_mjs/data/These/constructors.mjs +14 -2
  415. package/_mjs/data/These/constructors.mjs.map +1 -1
  416. package/_mjs/data/These/definition.mjs +8 -0
  417. package/_mjs/data/These/definition.mjs.map +1 -1
  418. package/_mjs/data/These/destructors.mjs +53 -0
  419. package/_mjs/data/These/destructors.mjs.map +1 -1
  420. package/_mjs/data/These/instances.mjs +36 -0
  421. package/_mjs/data/These/instances.mjs.map +1 -0
  422. package/_mjs/data/These.mjs +1 -0
  423. package/_mjs/data/These.mjs.map +1 -1
  424. package/_mjs/data/bigint/definition.mjs +2 -0
  425. package/_mjs/data/bigint/definition.mjs.map +1 -0
  426. package/_mjs/data/bigint/instances.mjs +10 -0
  427. package/_mjs/data/bigint/instances.mjs.map +1 -0
  428. package/_mjs/data/bigint.mjs +4 -0
  429. package/_mjs/data/bigint.mjs.map +1 -0
  430. package/_mjs/data/boolean/definition.mjs +2 -0
  431. package/_mjs/data/boolean/definition.mjs.map +1 -0
  432. package/_mjs/data/boolean/instances.mjs +10 -0
  433. package/_mjs/data/boolean/instances.mjs.map +1 -0
  434. package/_mjs/data/boolean.mjs +4 -0
  435. package/_mjs/data/boolean.mjs.map +1 -0
  436. package/_mjs/data/number/instances.mjs +14 -4
  437. package/_mjs/data/number/instances.mjs.map +1 -1
  438. package/_mjs/data/object/instances.mjs +10 -0
  439. package/_mjs/data/object/instances.mjs.map +1 -0
  440. package/_mjs/data/string/instances.mjs +20 -8
  441. package/_mjs/data/string/instances.mjs.map +1 -1
  442. package/_mjs/internal/Stack.mjs +4 -0
  443. package/_mjs/internal/Stack.mjs.map +1 -1
  444. package/_mjs/json/EitherJson.mjs +18 -0
  445. package/_mjs/json/EitherJson.mjs.map +1 -0
  446. package/_mjs/json/MaybeJson.mjs +16 -0
  447. package/_mjs/json/MaybeJson.mjs.map +1 -0
  448. package/_mjs/json/TheseJson.mjs +22 -0
  449. package/_mjs/json/TheseJson.mjs.map +1 -0
  450. package/_mjs/optics/Optional/definition.mjs +5 -4
  451. package/_mjs/optics/Optional/definition.mjs.map +1 -1
  452. package/_mjs/optics/Traversal/api/compose.mjs +1 -1
  453. package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
  454. package/_mjs/optics/Traversal/api/fromTraversable.mjs +5 -4
  455. package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
  456. package/_mjs/optics/Traversal/definition.mjs +14 -12
  457. package/_mjs/optics/Traversal/definition.mjs.map +1 -1
  458. package/_mjs/typeclass/Align.mjs +0 -11
  459. package/_mjs/typeclass/Align.mjs.map +1 -1
  460. package/_mjs/typeclass/Alt.mjs +4 -7
  461. package/_mjs/typeclass/Alt.mjs.map +1 -1
  462. package/_mjs/typeclass/Alternative.mjs +0 -13
  463. package/_mjs/typeclass/Alternative.mjs.map +1 -1
  464. package/_mjs/typeclass/Applicative.mjs +0 -12
  465. package/_mjs/typeclass/Applicative.mjs.map +1 -1
  466. package/_mjs/typeclass/ApplicativeExcept.mjs +32 -24
  467. package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
  468. package/_mjs/typeclass/Apply.mjs +85 -42
  469. package/_mjs/typeclass/Apply.mjs.map +1 -1
  470. package/_mjs/typeclass/Chain.mjs +33 -12
  471. package/_mjs/typeclass/Chain.mjs.map +1 -1
  472. package/_mjs/typeclass/Closure.mjs +1 -4
  473. package/_mjs/typeclass/Closure.mjs.map +1 -1
  474. package/_mjs/typeclass/Eq/definition.mjs +9 -0
  475. package/_mjs/typeclass/Eq/definition.mjs.map +1 -0
  476. package/_mjs/typeclass/Eq/derivations.mjs +46 -0
  477. package/_mjs/typeclass/Eq/derivations.mjs.map +1 -0
  478. package/_mjs/typeclass/Eq.mjs +1 -11
  479. package/_mjs/typeclass/Eq.mjs.map +1 -1
  480. package/_mjs/typeclass/Fail.mjs +5 -7
  481. package/_mjs/typeclass/Fail.mjs.map +1 -1
  482. package/_mjs/typeclass/Filterable.mjs +27 -13
  483. package/_mjs/typeclass/Filterable.mjs.map +1 -1
  484. package/_mjs/typeclass/FilterableWithIndex.mjs +0 -16
  485. package/_mjs/typeclass/FilterableWithIndex.mjs.map +1 -1
  486. package/_mjs/typeclass/Foldable.mjs +29 -12
  487. package/_mjs/typeclass/Foldable.mjs.map +1 -1
  488. package/_mjs/typeclass/FoldableWithIndex.mjs +29 -13
  489. package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
  490. package/_mjs/typeclass/Functor.mjs +16 -9
  491. package/_mjs/typeclass/Functor.mjs.map +1 -1
  492. package/_mjs/typeclass/FunctorWithIndex.mjs +0 -12
  493. package/_mjs/typeclass/FunctorWithIndex.mjs.map +1 -1
  494. package/_mjs/typeclass/Guard/api.mjs +23 -0
  495. package/_mjs/typeclass/Guard/api.mjs.map +1 -0
  496. package/_mjs/typeclass/Guard/definition.mjs +23 -0
  497. package/_mjs/typeclass/Guard/definition.mjs.map +1 -0
  498. package/_mjs/typeclass/Guard/derivations.mjs +67 -0
  499. package/_mjs/typeclass/Guard/derivations.mjs.map +1 -0
  500. package/_mjs/typeclass/Guard.mjs +4 -0
  501. package/_mjs/typeclass/Guard.mjs.map +1 -0
  502. package/_mjs/typeclass/HashEq.mjs +3 -3
  503. package/_mjs/typeclass/HashEq.mjs.map +1 -1
  504. package/_mjs/typeclass/Monad.mjs +0 -12
  505. package/_mjs/typeclass/Monad.mjs.map +1 -1
  506. package/_mjs/typeclass/MonadExcept.mjs +9 -13
  507. package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
  508. package/_mjs/typeclass/Monoid.mjs +50 -1
  509. package/_mjs/typeclass/Monoid.mjs.map +1 -1
  510. package/_mjs/typeclass/Nil.mjs +8 -1
  511. package/_mjs/typeclass/Nil.mjs.map +1 -1
  512. package/_mjs/typeclass/Ord/api/contramap.mjs +2 -4
  513. package/_mjs/typeclass/Ord/api/contramap.mjs.map +1 -1
  514. package/_mjs/typeclass/Ord/api/max.mjs +1 -1
  515. package/_mjs/typeclass/Ord/api/max.mjs.map +1 -1
  516. package/_mjs/typeclass/Ord/api/min.mjs +1 -1
  517. package/_mjs/typeclass/Ord/api/min.mjs.map +1 -1
  518. package/_mjs/typeclass/Ord/definition.mjs +2 -3
  519. package/_mjs/typeclass/Ord/definition.mjs.map +1 -1
  520. package/_mjs/typeclass/Ord/instances.mjs +7 -7
  521. package/_mjs/typeclass/Ord/instances.mjs.map +1 -1
  522. package/_mjs/typeclass/Pointed.mjs +5 -4
  523. package/_mjs/typeclass/Pointed.mjs.map +1 -1
  524. package/_mjs/typeclass/Semialign.mjs +67 -74
  525. package/_mjs/typeclass/Semialign.mjs.map +1 -1
  526. package/_mjs/typeclass/Semigroup/api.mjs +2 -2
  527. package/_mjs/typeclass/Semigroup/api.mjs.map +1 -1
  528. package/_mjs/typeclass/Semigroup/definition.mjs.map +1 -1
  529. package/_mjs/typeclass/Semigroup/derivations.mjs +50 -0
  530. package/_mjs/typeclass/Semigroup/derivations.mjs.map +1 -0
  531. package/_mjs/typeclass/Semigroup.mjs +1 -1
  532. package/_mjs/typeclass/Semimonoidal.mjs +8 -6
  533. package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
  534. package/_mjs/typeclass/Showable/show.mjs +11 -11
  535. package/_mjs/typeclass/Showable/show.mjs.map +1 -1
  536. package/_mjs/typeclass/Traversable.mjs +25 -24
  537. package/_mjs/typeclass/Traversable.mjs.map +1 -1
  538. package/_mjs/typeclass/TraversableWithIndex.mjs +6 -24
  539. package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
  540. package/_mjs/typeclass/Witherable.mjs +39 -32
  541. package/_mjs/typeclass/Witherable.mjs.map +1 -1
  542. package/_mjs/typeclass/WitherableWithIndex.mjs +39 -37
  543. package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
  544. package/_mjs/typeclass.mjs +1 -0
  545. package/_mjs/typeclass.mjs.map +1 -1
  546. package/_mjs/util/predicates.mjs +3 -0
  547. package/_mjs/util/predicates.mjs.map +1 -1
  548. package/_src/collection/Iterable/api/traverseConc.ts +21 -29
  549. package/_src/collection/Iterable/api.ts +20 -34
  550. package/_src/collection/compat/Array/api.ts +1 -1
  551. package/_src/collection/immutable/Conc/api.ts +26 -46
  552. package/_src/collection/immutable/Conc/definition.ts +19 -8
  553. package/_src/collection/immutable/Dictionary/definition.ts +1 -1
  554. package/_src/collection/immutable/HashMap/api.ts +24 -81
  555. package/_src/collection/immutable/HashMap/definition.ts +7 -9
  556. package/_src/collection/immutable/HashMap/internal.ts +1 -1
  557. package/_src/collection/immutable/HashSet/api.ts +4 -4
  558. package/_src/collection/immutable/ImmutableArray/api/chunksOf.ts +6 -0
  559. package/_src/collection/immutable/ImmutableArray/api/slice.ts +6 -0
  560. package/_src/collection/immutable/ImmutableArray/api/splitAt.ts +6 -0
  561. package/_src/collection/immutable/ImmutableArray/api/splitWhere.ts +18 -0
  562. package/_src/collection/immutable/ImmutableArray/api.ts +181 -267
  563. package/_src/collection/immutable/ImmutableArray/definition.ts +6 -8
  564. package/_src/collection/immutable/ImmutableArray/instances.ts +156 -134
  565. package/_src/collection/immutable/ImmutableArray.ts +7 -0
  566. package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +87 -157
  567. package/_src/collection/immutable/ImmutableNonEmptyArray/constructors.ts +2 -0
  568. package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +18 -6
  569. package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +39 -49
  570. package/_src/collection/immutable/List/api.ts +2 -6
  571. package/_src/collection/immutable/RoseTree/api.ts +272 -0
  572. package/_src/collection/immutable/RoseTree/definition.ts +29 -0
  573. package/_src/collection/immutable/RoseTree.ts +4 -0
  574. package/_src/collection/immutable/SortedMap/api.ts +56 -53
  575. package/_src/collection/immutable/Vector/api.ts +57 -17
  576. package/_src/collection/immutable/Vector/definition.ts +10 -0
  577. package/_src/collection/mutable/HashMap.ts +5 -5
  578. package/_src/collection/mutable/HashSet.ts +4 -4
  579. package/_src/control/Eval/api.ts +5 -1
  580. package/_src/control/Eval/definition.ts +5 -8
  581. package/_src/control/Eval/instance.ts +16 -15
  582. package/_src/control/Z/definition.ts +26 -19
  583. package/_src/control/Z/instances.ts +9 -8
  584. package/_src/data/Branded/definition.ts +47 -0
  585. package/_src/data/Branded/derivations.ts +57 -0
  586. package/_src/data/Branded.ts +4 -0
  587. package/_src/data/CaseClass.ts +2 -2
  588. package/_src/data/Cause/api/fold.ts +1 -0
  589. package/_src/data/Cause/api.ts +18 -0
  590. package/_src/data/Const/api.ts +3 -3
  591. package/_src/data/Const/definition.ts +22 -5
  592. package/_src/data/Const/instances.ts +12 -21
  593. package/_src/data/DecodeError/definition.ts +227 -0
  594. package/_src/data/DecodeError.ts +3 -0
  595. package/_src/data/Decoder/api.ts +198 -0
  596. package/_src/data/Decoder/definition.ts +25 -0
  597. package/_src/data/Decoder.ts +4 -0
  598. package/_src/data/Duration/api.ts +21 -14
  599. package/_src/data/Either/api/alignWith.ts +2 -0
  600. package/_src/data/Either/api.ts +85 -30
  601. package/_src/data/Either/definition.ts +41 -19
  602. package/_src/data/Either/destructors.ts +1 -0
  603. package/_src/data/Either/instances.ts +102 -51
  604. package/_src/data/Environment/api.ts +19 -4
  605. package/_src/data/Identity/api.ts +19 -4
  606. package/_src/data/Identity/definition.ts +7 -3
  607. package/_src/data/Identity/instances.ts +15 -8
  608. package/_src/data/Interval.ts +103 -0
  609. package/_src/data/Maybe/api.ts +21 -31
  610. package/_src/data/Maybe/definition.ts +31 -19
  611. package/_src/data/Maybe/destructors.ts +1 -0
  612. package/_src/data/Maybe/instances.ts +61 -34
  613. package/_src/data/Newtype.ts +11 -32
  614. package/_src/data/Patch/api.ts +1 -1
  615. package/_src/data/Refinement/api.ts +4 -2
  616. package/_src/data/Struct/definition.ts +1 -1
  617. package/_src/data/These/api.ts +184 -0
  618. package/_src/data/These/constructors.ts +10 -0
  619. package/_src/data/These/definition.ts +7 -0
  620. package/_src/data/These/destructors.ts +45 -0
  621. package/_src/data/These/instances.ts +43 -0
  622. package/_src/data/These.ts +1 -0
  623. package/_src/data/bigint/definition.ts +13 -0
  624. package/_src/data/bigint/instances.ts +8 -0
  625. package/_src/data/bigint.ts +4 -0
  626. package/_src/data/boolean/definition.ts +13 -0
  627. package/_src/data/boolean/instances.ts +8 -0
  628. package/_src/data/boolean.ts +4 -0
  629. package/_src/data/number/instances.ts +13 -3
  630. package/_src/data/object/instances.ts +7 -0
  631. package/_src/data/string/instances.ts +17 -5
  632. package/_src/internal/Stack.ts +4 -0
  633. package/_src/json/EitherJson.ts +28 -0
  634. package/_src/json/MaybeJson.ts +27 -0
  635. package/_src/json/TheseJson.ts +31 -0
  636. package/_src/optics/Optional/definition.ts +2 -2
  637. package/_src/optics/Traversal/api/compose.ts +1 -1
  638. package/_src/optics/Traversal/api/fromTraversable.ts +15 -41
  639. package/_src/optics/Traversal/definition.ts +21 -23
  640. package/_src/typeclass/Align.ts +4 -18
  641. package/_src/typeclass/Alt.ts +59 -90
  642. package/_src/typeclass/Alternative.ts +4 -20
  643. package/_src/typeclass/Applicative.ts +3 -23
  644. package/_src/typeclass/ApplicativeExcept.ts +94 -193
  645. package/_src/typeclass/Apply.ts +319 -509
  646. package/_src/typeclass/Chain.ts +127 -199
  647. package/_src/typeclass/Closure.ts +4 -20
  648. package/_src/typeclass/Eq/definition.ts +20 -0
  649. package/_src/typeclass/Eq/derivations.ts +61 -0
  650. package/_src/typeclass/Eq.ts +2 -36
  651. package/_src/typeclass/Fail.ts +28 -27
  652. package/_src/typeclass/Filterable.ts +70 -117
  653. package/_src/typeclass/FilterableWithIndex.ts +27 -131
  654. package/_src/typeclass/Foldable.ts +35 -52
  655. package/_src/typeclass/FoldableWithIndex.ts +40 -75
  656. package/_src/typeclass/Functor.ts +21 -59
  657. package/_src/typeclass/FunctorWithIndex.ts +6 -34
  658. package/_src/typeclass/Guard/api.ts +32 -0
  659. package/_src/typeclass/Guard/definition.ts +23 -0
  660. package/_src/typeclass/Guard/derivations.ts +80 -0
  661. package/_src/typeclass/Guard.ts +5 -0
  662. package/_src/typeclass/HashEq.ts +3 -4
  663. package/_src/typeclass/Monad.ts +3 -18
  664. package/_src/typeclass/MonadExcept.ts +9 -32
  665. package/_src/typeclass/Monoid.ts +60 -2
  666. package/_src/typeclass/Nil.ts +26 -17
  667. package/_src/typeclass/Ord/api/contramap.ts +2 -4
  668. package/_src/typeclass/Ord/api/max.ts +1 -1
  669. package/_src/typeclass/Ord/api/min.ts +1 -1
  670. package/_src/typeclass/Ord/definition.ts +3 -19
  671. package/_src/typeclass/Ord/instances.ts +6 -6
  672. package/_src/typeclass/Pointed.ts +29 -25
  673. package/_src/typeclass/Semialign.ts +308 -444
  674. package/_src/typeclass/Semigroup/api.ts +2 -2
  675. package/_src/typeclass/Semigroup/definition.ts +2 -6
  676. package/_src/typeclass/Semigroup/derivations.ts +64 -0
  677. package/_src/typeclass/Semigroup.ts +1 -1
  678. package/_src/typeclass/Semimonoidal.ts +55 -84
  679. package/_src/typeclass/Showable/show.ts +6 -8
  680. package/_src/typeclass/Traversable.ts +67 -157
  681. package/_src/typeclass/TraversableWithIndex.ts +37 -127
  682. package/_src/typeclass/Witherable.ts +120 -279
  683. package/_src/typeclass/WitherableWithIndex.ts +129 -337
  684. package/_src/typeclass.ts +2 -0
  685. package/_src/util/predicates.ts +4 -0
  686. package/collection/Iterable/api/traverseConc.d.ts +6 -4
  687. package/collection/Iterable/api.d.ts +5 -13
  688. package/collection/immutable/Conc/api.d.ts +15 -23
  689. package/collection/immutable/Conc/definition.d.ts +14 -7
  690. package/collection/immutable/Dictionary/definition.d.ts +1 -1
  691. package/collection/immutable/HashMap/api.d.ts +15 -27
  692. package/collection/immutable/HashMap/definition.d.ts +7 -9
  693. package/collection/immutable/HashMap/internal.d.ts +2 -2
  694. package/collection/immutable/HashSet/definition.d.ts +1 -0
  695. package/collection/immutable/ImmutableArray/api/chunksOf.d.ts +6 -0
  696. package/collection/immutable/ImmutableArray/api/slice.d.ts +6 -0
  697. package/collection/immutable/ImmutableArray/api/splitAt.d.ts +6 -0
  698. package/collection/immutable/ImmutableArray/api/splitWhere.d.ts +7 -0
  699. package/collection/immutable/ImmutableArray/api.d.ts +42 -119
  700. package/collection/immutable/ImmutableArray/definition.d.ts +6 -7
  701. package/collection/immutable/ImmutableArray/instances.d.ts +86 -17
  702. package/collection/immutable/ImmutableArray.d.ts +4 -0
  703. package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +27 -48
  704. package/collection/immutable/ImmutableNonEmptyArray/constructors.d.ts +2 -1
  705. package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +15 -7
  706. package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +1 -1
  707. package/collection/immutable/List/api.d.ts +1 -2
  708. package/collection/immutable/RoseTree/api.d.ts +63 -0
  709. package/collection/immutable/RoseTree/definition.d.ts +24 -0
  710. package/collection/immutable/RoseTree.d.ts +2 -0
  711. package/collection/immutable/SortedMap/api.d.ts +2 -1
  712. package/collection/immutable/SortedMap/iterator.d.ts +1 -1
  713. package/collection/immutable/Vector/api.d.ts +31 -8
  714. package/collection/immutable/Vector/definition.d.ts +13 -0
  715. package/collection/mutable/HashMap.d.ts +2 -1
  716. package/collection/mutable/HashSet.d.ts +1 -0
  717. package/collection/mutable/ListBuffer.d.ts +1 -0
  718. package/control/Eval/api.d.ts +1 -0
  719. package/control/Eval/definition.d.ts +5 -7
  720. package/control/Eval/instance.d.ts +4 -1
  721. package/control/Z/definition.d.ts +23 -17
  722. package/control/Z/instances.d.ts +4 -3
  723. package/data/Branded/definition.d.ts +36 -0
  724. package/data/Branded/derivations.d.ts +24 -0
  725. package/data/Branded.d.ts +2 -0
  726. package/data/Cause/api.d.ts +7 -1
  727. package/data/Const/api.d.ts +1 -1
  728. package/data/Const/definition.d.ts +24 -7
  729. package/data/Const/instances.d.ts +4 -12
  730. package/data/DecodeError/definition.d.ts +141 -0
  731. package/data/DecodeError.d.ts +1 -0
  732. package/data/Decoder/api.d.ts +65 -0
  733. package/data/Decoder/definition.d.ts +25 -0
  734. package/data/Decoder.d.ts +2 -0
  735. package/data/Duration/api.d.ts +12 -8
  736. package/data/Either/api.d.ts +29 -17
  737. package/data/Either/definition.d.ts +32 -14
  738. package/data/Either/instances.d.ts +26 -11
  739. package/data/Environment/api.d.ts +5 -0
  740. package/data/Exit/definition.d.ts +1 -0
  741. package/data/Identity/api.d.ts +11 -0
  742. package/data/Identity/definition.d.ts +8 -2
  743. package/data/Identity/instances.d.ts +5 -9
  744. package/data/Interval.d.ts +71 -0
  745. package/data/Maybe/api.d.ts +3 -17
  746. package/data/Maybe/definition.d.ts +23 -14
  747. package/data/Maybe/instances.d.ts +14 -8
  748. package/data/Newtype.d.ts +8 -9
  749. package/data/Refinement/api.d.ts +2 -0
  750. package/data/Struct/definition.d.ts +1 -1
  751. package/data/These/api.d.ts +73 -0
  752. package/data/These/constructors.d.ts +7 -1
  753. package/data/These/definition.d.ts +5 -0
  754. package/data/These/destructors.d.ts +27 -1
  755. package/data/These/instances.d.ts +13 -0
  756. package/data/These.d.ts +1 -0
  757. package/data/bigint/definition.d.ts +13 -0
  758. package/data/bigint/instances.d.ts +7 -0
  759. package/data/bigint.d.ts +2 -0
  760. package/data/boolean/definition.d.ts +13 -0
  761. package/data/boolean/instances.d.ts +7 -0
  762. package/data/boolean.d.ts +2 -0
  763. package/data/number/instances.d.ts +8 -0
  764. package/data/object/instances.d.ts +7 -0
  765. package/data/string/instances.d.ts +10 -0
  766. package/internal/Stack.d.ts +1 -0
  767. package/json/EitherJson.d.ts +24 -0
  768. package/json/MaybeJson.d.ts +23 -0
  769. package/json/TheseJson.d.ts +26 -0
  770. package/optics/Traversal/api/fromTraversable.d.ts +1 -1
  771. package/optics/Traversal/definition.d.ts +4 -9
  772. package/package.json +2 -2
  773. package/typeclass/Align.d.ts +3 -10
  774. package/typeclass/Alt.d.ts +6 -19
  775. package/typeclass/Alternative.d.ts +4 -12
  776. package/typeclass/Applicative.d.ts +3 -12
  777. package/typeclass/ApplicativeExcept.d.ts +14 -39
  778. package/typeclass/Apply.d.ts +41 -72
  779. package/typeclass/Chain.d.ts +18 -28
  780. package/typeclass/Closure.d.ts +2 -12
  781. package/typeclass/Eq/definition.d.ts +17 -0
  782. package/typeclass/Eq/derivations.d.ts +24 -0
  783. package/typeclass/Eq.d.ts +2 -27
  784. package/typeclass/Fail.d.ts +4 -10
  785. package/typeclass/Filterable.d.ts +30 -51
  786. package/typeclass/FilterableWithIndex.d.ts +10 -53
  787. package/typeclass/Foldable.d.ts +19 -31
  788. package/typeclass/FoldableWithIndex.d.ts +20 -33
  789. package/typeclass/Functor.d.ts +11 -22
  790. package/typeclass/FunctorWithIndex.d.ts +3 -19
  791. package/typeclass/Guard/api.d.ts +20 -0
  792. package/typeclass/Guard/definition.d.ts +23 -0
  793. package/typeclass/Guard/derivations.d.ts +36 -0
  794. package/typeclass/Guard.d.ts +2 -0
  795. package/typeclass/HashEq.d.ts +1 -2
  796. package/typeclass/Monad.d.ts +3 -11
  797. package/typeclass/MonadExcept.d.ts +6 -17
  798. package/typeclass/Monoid.d.ts +24 -2
  799. package/typeclass/Nil.d.ts +7 -8
  800. package/typeclass/Ord/definition.d.ts +2 -14
  801. package/typeclass/Pointed.d.ts +4 -10
  802. package/typeclass/Semialign.d.ts +51 -63
  803. package/typeclass/Semigroup/definition.d.ts +3 -5
  804. package/typeclass/Semigroup/derivations.d.ts +25 -0
  805. package/typeclass/Semimonoidal.d.ts +5 -14
  806. package/typeclass/Showable/show.d.ts +1 -0
  807. package/typeclass/Traversable.d.ts +17 -57
  808. package/typeclass/TraversableWithIndex.d.ts +9 -52
  809. package/typeclass/Witherable.d.ts +22 -82
  810. package/typeclass/WitherableWithIndex.d.ts +26 -98
  811. package/typeclass.d.ts +1 -0
  812. package/util/predicates.d.ts +1 -0
@@ -0,0 +1,198 @@
1
+ import type { DecodeError } from "@fncts/base/data/DecodeError";
2
+ import type { Check } from "@fncts/typelevel/Check";
3
+ import type { OptionalKeys, RequiredKeys } from "@fncts/typelevel/Object";
4
+
5
+ import {
6
+ CompoundError,
7
+ LiteralError,
8
+ MemberError,
9
+ MissingKeyError,
10
+ OptionalKeyError,
11
+ PrimitiveError,
12
+ RequiredKeyError,
13
+ UnionError,
14
+ } from "@fncts/base/data/DecodeError";
15
+ import { Decoder } from "@fncts/base/data/Decoder/definition";
16
+
17
+ /**
18
+ * @tsplus fluent fncts.Decoder __call
19
+ */
20
+ export function decode<I, E, A>(self: Decoder<A>, input: unknown): These<DecodeError, A> {
21
+ return self.decode(input);
22
+ }
23
+
24
+ export function fromGuard<A>(guard: Guard<A>, onFalse: (i: unknown) => DecodeError, label: string): Decoder<A> {
25
+ return Decoder((a) => (guard.is(a) ? These.right(a) : These.left(onFalse(a))), label);
26
+ }
27
+
28
+ /**
29
+ * @tsplus implicit
30
+ */
31
+ export const string: Decoder<string> = fromGuard(String.Guard, (u) => new PrimitiveError(u, "string"), "string");
32
+
33
+ /**
34
+ * @tsplus implicit
35
+ */
36
+ export const number: Decoder<number> = fromGuard(Number.Guard, (u) => new PrimitiveError(u, "number"), "number");
37
+
38
+ /**
39
+ * @tsplus implicit
40
+ */
41
+ export const boolean: Decoder<boolean> = fromGuard(Boolean.Guard, (u) => new PrimitiveError(u, "boolean"), "boolean");
42
+
43
+ /**
44
+ * @tsplus implicit
45
+ */
46
+ export const record: Decoder<{}> = fromGuard(Object.Guard, (u) => new PrimitiveError(u, "{}"), "{}");
47
+
48
+ /**
49
+ * @tsplus derive fncts.Decoder lazy
50
+ */
51
+ export function deriveLazy<A>(f: (_: Decoder<A>) => Decoder<A>): Decoder<A> {
52
+ let cached: Decoder<A> | undefined;
53
+ const decoder: Decoder<A> = Decoder((u) => {
54
+ if (!cached) {
55
+ cached = f(decoder);
56
+ }
57
+ return cached.decode(u);
58
+ }, "[Recursive]");
59
+ return decoder;
60
+ }
61
+
62
+ /**
63
+ * @tsplus derive fncts.Decoder<_> 20
64
+ */
65
+ export function deriveLiteral<A extends string | number | boolean>(
66
+ ...[value]: Check<Check.IsLiteral<A> & Check.Not<Check.IsUnion<A>>> extends Check.True ? [value: A] : never
67
+ ): Decoder<A> {
68
+ return Decoder(
69
+ (u) => (u === value ? These.right(u as A) : These.left(new LiteralError(u, Vector(value)))),
70
+ value.toString(),
71
+ );
72
+ }
73
+
74
+ /**
75
+ * @tsplus derive fncts.Decoder<|> 30
76
+ */
77
+ export function deriveUnion<A extends ReadonlyArray<unknown>>(
78
+ ...elements: {
79
+ [K in keyof A]: Decoder<A[K]>;
80
+ }
81
+ ): Decoder<A[number]> {
82
+ const label = elements.map((decoder) => decoder.label).join(" | ");
83
+ return Decoder((u) => {
84
+ const errors: Array<MemberError> = [];
85
+ for (const decoder of elements) {
86
+ const result = decoder.decode(u);
87
+ if (result.isLeft()) {
88
+ errors.push(new MemberError(decoder.label, result.left));
89
+ } else {
90
+ return These.rightOrBoth(result.leftMaybe, result.right);
91
+ }
92
+ }
93
+ return These.left(new UnionError(label, Vector.from(errors)));
94
+ }, label);
95
+ }
96
+
97
+ /**
98
+ * @tsplus derive fncts.Decoder<_> 10
99
+ */
100
+ export function deriveStruct<A extends Record<string, any>>(
101
+ ...[requiredFields, optionalFields]: Check<Check.IsStruct<A>> extends Check.True
102
+ ? [
103
+ ...[
104
+ requiredFields: {
105
+ [k in RequiredKeys<A>]: Decoder<A[k]>;
106
+ },
107
+ ],
108
+ ...([OptionalKeys<A>] extends [never]
109
+ ? []
110
+ : [
111
+ optionalFields: {
112
+ [k in OptionalKeys<A>]: Decoder<NonNullable<A[k]>>;
113
+ },
114
+ ]),
115
+ ]
116
+ : never
117
+ ): Decoder<A> {
118
+ let label = "{";
119
+ let first = true;
120
+ for (const k in requiredFields) {
121
+ if (first) {
122
+ label += ` ${k}: ${(requiredFields[k] as Decoder<any>).label}`;
123
+ } else {
124
+ label += `, ${k}: ${(requiredFields[k] as Decoder<any>).label}`;
125
+ }
126
+ first = false;
127
+ }
128
+ if (optionalFields) {
129
+ for (const k in optionalFields) {
130
+ if (first) {
131
+ label += ` ${k}?: ${(optionalFields[k] as Decoder<any>).label}`;
132
+ } else {
133
+ label += `, ${k}?: ${(optionalFields[k] as Decoder<any>).label}`;
134
+ }
135
+ }
136
+ }
137
+ if (label.length > 1) {
138
+ label += " ";
139
+ }
140
+ label += "}";
141
+
142
+ return Decoder((u) => {
143
+ const recordResult = record.decode(u);
144
+ if (recordResult.isLeft()) {
145
+ return recordResult;
146
+ }
147
+ const input = recordResult.right;
148
+ let errored = false;
149
+ const errors: Array<RequiredKeyError | OptionalKeyError> = [];
150
+ const decoded = {} as A;
151
+ for (const key in requiredFields) {
152
+ if (!(key in input)) {
153
+ errors.push(new RequiredKeyError(key, new MissingKeyError(key)));
154
+ errored = true;
155
+ } else {
156
+ const res = (requiredFields[key] as Decoder<any>).decode(input[key]);
157
+ res.match2(
158
+ (e) => {
159
+ errored = true;
160
+ errors.push(new RequiredKeyError(key, e));
161
+ },
162
+ (warning, a) => {
163
+ decoded[key as keyof A] = a;
164
+ if (warning.isJust()) {
165
+ errors.push(new RequiredKeyError(key, warning.value));
166
+ }
167
+ },
168
+ );
169
+ }
170
+ }
171
+ if (optionalFields) {
172
+ for (const key in optionalFields) {
173
+ if (key in input && typeof input[key as string] !== "undefined") {
174
+ const res = (optionalFields[key] as Decoder<any>).decode(input[key as string]);
175
+ res.match2(
176
+ (e) => {
177
+ errored = true;
178
+ errors.push(new OptionalKeyError(key, e));
179
+ },
180
+ (warning, a) => {
181
+ decoded[key as keyof A] = a;
182
+ if (warning.isJust()) {
183
+ errors.push(new RequiredKeyError(key, warning.value));
184
+ }
185
+ },
186
+ );
187
+ }
188
+ }
189
+ }
190
+ if (errored) {
191
+ return These.left(new CompoundError("struct", Vector.from(errors)));
192
+ }
193
+ if (errors.length !== 0) {
194
+ return These.both(new CompoundError("struct", Vector.from(errors)), decoded);
195
+ }
196
+ return These.right(decoded);
197
+ }, label);
198
+ }
@@ -0,0 +1,25 @@
1
+ import type { DecodeError } from "@fncts/base/data/DecodeError";
2
+
3
+ export const DecoderTypeId = Symbol.for("fncts.Decoder");
4
+ export type DecoderTypeId = typeof DecoderTypeId;
5
+
6
+ export interface DecoderF extends Decoder<any> {}
7
+
8
+ /**
9
+ * @tsplus type fncts.Decoder
10
+ * @tsplus companion fncts.DecoderOps
11
+ */
12
+ export class Decoder<A> {
13
+ readonly _typeId: DecoderTypeId = DecoderTypeId;
14
+ readonly [HKT.F]!: DecoderF;
15
+ readonly [HKT.A]!: () => A;
16
+ readonly [HKT.T]!: Decoder<HKT._A<this>>;
17
+ constructor(readonly decode: (input: unknown) => These<DecodeError, A>, readonly label: string) {}
18
+ }
19
+
20
+ /**
21
+ * @tsplus static fncts.DecoderOps __call
22
+ */
23
+ export function makeDecoder<A>(decode: (input: unknown) => These<DecodeError, A>, label: string): Decoder<A> {
24
+ return new Decoder(decode, label);
25
+ }
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: "./Decoder/*.ts" }
2
+ export * from "./Decoder/api.js";
3
+ export * from "./Decoder/definition.js";
4
+ // codegen:end
@@ -4,54 +4,54 @@ import type { IsInt } from "@fncts/base/types";
4
4
  * @tsplus getter fncts.Number milliseconds
5
5
  * @tsplus static fncts.DurationOps milliseconds
6
6
  */
7
- export function milliseconds<N extends number>(self: IsInt<N>): Duration {
8
- return new Duration(self);
7
+ export function milliseconds(self: number): Duration {
8
+ return new Duration(Math.round(self));
9
9
  }
10
10
 
11
11
  /**
12
12
  * @tsplus getter fncts.Number seconds
13
13
  * @tsplus static fncts.DurationOps seconds
14
14
  */
15
- export function seconds<N extends number>(self: IsInt<N>): Duration {
16
- return new Duration(self * 1000);
15
+ export function seconds(self: number): Duration {
16
+ return new Duration(Math.round(self * 1000));
17
17
  }
18
18
 
19
19
  /**
20
20
  * @tsplus getter fncts.Number minutes
21
21
  * @tsplus static fncts.DurationOps minutes
22
22
  */
23
- export function minutes<N extends number>(self: IsInt<N>): Duration {
24
- return new Duration(self * 60_000);
23
+ export function minutes(self: number): Duration {
24
+ return new Duration(Math.round(self * 60_000));
25
25
  }
26
26
 
27
27
  /**
28
28
  * @tsplus getter fncts.Number hours
29
29
  * @tsplus static fncts.DurationOps hours
30
30
  */
31
- export function hours<N extends number>(self: IsInt<N>): Duration {
32
- return new Duration(self * 3_600_000);
31
+ export function hours(self: number): Duration {
32
+ return new Duration(Math.round(self * 3_600_000));
33
33
  }
34
34
 
35
35
  /**
36
36
  * @tsplus getter fncts.Number days
37
37
  * @tsplus static fncts.DurationOps days
38
38
  */
39
- export function days<N extends number>(self: IsInt<N>): Duration {
40
- return new Duration(self * 86_400_000);
39
+ export function days(self: number): Duration {
40
+ return new Duration(Math.round(self * 86_400_000));
41
41
  }
42
42
 
43
43
  /**
44
44
  * @tsplus operator fncts.Duration *
45
45
  */
46
- export function mult<N extends number>(self: Duration, multiplicand: IsInt<N>) {
47
- return new Duration(self.milliseconds * multiplicand);
46
+ export function mult(self: Duration, multiplicand: number) {
47
+ return new Duration(self.milliseconds * Math.round(multiplicand));
48
48
  }
49
49
 
50
50
  /**
51
51
  * @tsplus operator fncts.Duration *
52
52
  */
53
- export function multInverted<N extends number>(multiplicand: IsInt<N>, self: Duration) {
54
- return new Duration(self.milliseconds * multiplicand);
53
+ export function multInverted(multiplicand: number, self: Duration) {
54
+ return new Duration(Math.round(self.milliseconds) * multiplicand);
55
55
  }
56
56
 
57
57
  /**
@@ -67,3 +67,10 @@ export function sum(self: Duration, that: Duration): Duration {
67
67
  export function difference(self: Duration, that: Duration): Duration {
68
68
  return new Duration(self.milliseconds - that.milliseconds);
69
69
  }
70
+
71
+ /**
72
+ * @tsplus static fncts.DurationOps fromInterval
73
+ */
74
+ export function fromInterval(start: number, end: number): Duration {
75
+ return Duration.milliseconds(Math.round(end) - Math.round(start));
76
+ }
@@ -11,6 +11,8 @@ export function alignWith_<E1, A, E2, B, C>(
11
11
  fb: Either<E2, B>,
12
12
  f: (_: These<A, B>) => C,
13
13
  ): Either<E1 | E2, C> {
14
+ self.concrete();
15
+ fb.concrete();
14
16
  return self._tag === EitherTag.Left
15
17
  ? fb._tag === EitherTag.Left
16
18
  ? self
@@ -1,14 +1,17 @@
1
1
  import type * as P from "../../typeclass.js";
2
- import type { EitherF } from "./instances.js";
2
+ import type { EitherF } from "./definition.js";
3
3
 
4
4
  import { hasTypeId } from "../../util/predicates.js";
5
5
  import { identity } from "../function.js";
6
+ import { concrete } from "./definition.js";
6
7
  import { EitherTag, EitherTypeId, Left, Right } from "./definition.js";
7
8
 
8
9
  /**
9
10
  * @tsplus fluent fncts.Either ap
10
11
  */
11
12
  export function ap_<E1, A, E2, B>(self: Either<E1, (a: A) => B>, fa: Either<E2, A>): Either<E1 | E2, B> {
13
+ self.concrete();
14
+ fa.concrete();
12
15
  return self._tag === EitherTag.Left ? self : fa._tag === EitherTag.Left ? fa : Right(self.right(fa.right));
13
16
  }
14
17
 
@@ -16,6 +19,7 @@ export function ap_<E1, A, E2, B>(self: Either<E1, (a: A) => B>, fa: Either<E2,
16
19
  * @tsplus fluent fncts.Either bimap
17
20
  */
18
21
  export function bimap_<E1, A, E2, B>(self: Either<E1, A>, f: (e: E1) => E2, g: (a: A) => B): Either<E2, B> {
22
+ self.concrete();
19
23
  return self._tag === EitherTag.Left ? Left(f(self.left)) : Right(g(self.right));
20
24
  }
21
25
 
@@ -23,6 +27,7 @@ export function bimap_<E1, A, E2, B>(self: Either<E1, A>, f: (e: E1) => E2, g: (
23
27
  * @tsplus fluent fncts.Either catchAll
24
28
  */
25
29
  export function catchAll_<E1, A, E2, B>(self: Either<E1, A>, f: (e: E1) => Either<E2, B>): Either<E2, A | B> {
30
+ self.concrete();
26
31
  return self._tag === EitherTag.Left ? f(self.left) : self;
27
32
  }
28
33
 
@@ -47,6 +52,7 @@ export function catchMap_<E, A, B>(self: Either<E, A>, f: (e: E) => B): Either<n
47
52
  * @tsplus fluent fncts.Either flatMap
48
53
  */
49
54
  export function flatMap_<E1, A, E2, B>(self: Either<E1, A>, f: (a: A) => Either<E2, B>): Either<E1 | E2, B> {
55
+ self.concrete();
50
56
  return self._tag === EitherTag.Left ? self : f(self.right);
51
57
  }
52
58
 
@@ -54,6 +60,7 @@ export function flatMap_<E1, A, E2, B>(self: Either<E1, A>, f: (a: A) => Either<
54
60
  * @tsplus fluent fncts.Either foldLeft
55
61
  */
56
62
  export function foldLeft_<E, A, B>(self: Either<E, A>, b: B, f: (b: B, a: A) => B): B {
63
+ self.concrete();
57
64
  return self._tag === EitherTag.Left ? b : f(b, self.right);
58
65
  }
59
66
 
@@ -61,23 +68,16 @@ export function foldLeft_<E, A, B>(self: Either<E, A>, b: B, f: (b: B, a: A) =>
61
68
  * @tsplus fluent fncts.Either foldRight
62
69
  */
63
70
  export function foldRight_<E, A, B>(self: Either<E, A>, b: B, f: (a: A, b: B) => B): B {
71
+ self.concrete();
64
72
  return self._tag === EitherTag.Left ? b : f(self.right, b);
65
73
  }
66
74
 
67
75
  /**
68
- * @constrained
76
+ * @tsplus fluent fncts.Either foldMap
69
77
  */
70
- export function foldMap_<M>(M: P.Monoid<M>) {
71
- return <E, A>(self: Either<E, A>, f: (a: A) => M): M => (self._tag === EitherTag.Left ? M.nat : f(self.right));
72
- }
73
-
74
- /**
75
- * @tsplus getter fncts.Either foldMap
76
- */
77
- export function foldMapSelf<E, A>(self: Either<E, A>) {
78
- return <M>(M: P.Monoid<M>) =>
79
- (f: (a: A) => M): M =>
80
- foldMap_(M)(self, f);
78
+ export function foldMap_<E, A, M>(self: Either<E, A>, f: (a: A) => M, /** @tsplus auto */ M: P.Monoid<M>): M {
79
+ self.concrete();
80
+ return self._tag === EitherTag.Left ? M.nat : f(self.right);
81
81
  }
82
82
 
83
83
  /**
@@ -119,6 +119,7 @@ export function isEither(u: unknown): u is Either<unknown, unknown> {
119
119
  * @tsplus static fncts.EitherOps isLeft
120
120
  */
121
121
  export function isLeft<E, A>(self: Either<E, A>): self is Left<E> {
122
+ self.concrete();
122
123
  return self._tag === EitherTag.Left;
123
124
  }
124
125
 
@@ -127,6 +128,7 @@ export function isLeft<E, A>(self: Either<E, A>): self is Left<E> {
127
128
  * @tsplus static fncts.EitherOps isRight
128
129
  */
129
130
  export function isRight<E, A>(self: Either<E, A>): self is Right<A> {
131
+ self.concrete();
130
132
  return self._tag === EitherTag.Right;
131
133
  }
132
134
 
@@ -134,6 +136,7 @@ export function isRight<E, A>(self: Either<E, A>): self is Right<A> {
134
136
  * @tsplus fluent fncts.Either map
135
137
  */
136
138
  export function map_<E, A, B>(self: Either<E, A>, f: (a: A) => B): Either<E, B> {
139
+ self.concrete();
137
140
  return self._tag === EitherTag.Left ? self : Right(f(self.right));
138
141
  }
139
142
 
@@ -141,6 +144,7 @@ export function map_<E, A, B>(self: Either<E, A>, f: (a: A) => B): Either<E, B>
141
144
  * @tsplus fluent fncts.Either mapLeft
142
145
  */
143
146
  export function mapLeft_<E1, A, E2>(self: Either<E1, A>, f: (e: E1) => E2): Either<E2, A> {
147
+ self.concrete();
144
148
  return self._tag === EitherTag.Left ? Left(f(self.left)) : self;
145
149
  }
146
150
 
@@ -155,45 +159,96 @@ export function merge<E, A>(self: Either<E, A>): E | A {
155
159
  * @tsplus fluent fncts.Either orElse
156
160
  */
157
161
  export function orElse_<E1, A, E2, B>(self: Either<E1, A>, that: Lazy<Either<E2, B>>): Either<E1 | E2, A | B> {
162
+ self.concrete();
158
163
  return self._tag === EitherTag.Left ? that() : self;
159
164
  }
160
165
 
161
- export const sequence: P.sequence<EitherF> = (A) => (self) => traverse_(A)(self, identity);
162
-
163
- /**
164
- * @tsplus getter fncts.Either sequence
165
- */
166
- export const sequenceSelf: P.sequenceSelf<EitherF> = (self) => (A) =>
167
- unsafeCoerce(traverse_(A)(self, unsafeCoerce(identity)));
168
-
169
166
  /**
170
167
  * @tsplus getter fncts.Either swap
171
168
  */
172
169
  export function swap<E, A>(self: Either<E, A>): Either<A, E> {
170
+ self.concrete();
173
171
  return self._tag === EitherTag.Left ? Right(self.left) : Left(self.right);
174
172
  }
175
173
 
176
- export const traverse_: P.traverse_<EitherF> = (A) => (self, f) =>
174
+ /**
175
+ * @tsplus fluent fncts.Either traverse
176
+ */
177
+ export const traverse_: P.Traversable<EitherF>["traverse"] = (self, f, A) =>
177
178
  self.match(
178
179
  (e) => A.pure(Left(e)),
179
- (a) => f(a).via(A.map((b) => Right(b))),
180
+ (a) => f(a).map((b) => Right(b), A),
180
181
  );
181
182
 
182
- export const traverse: P.traverse<EitherF> = (A) => (f) => (self) => traverse_(A)(self, f);
183
-
184
- /**
185
- * @tsplus getter fncts.Either traverse
186
- */
187
- export const traverseSelf: P.traverseSelf<EitherF> = (self) => (A) => (f) => traverse_(A)(self, f);
188
-
189
183
  export function zipWith_<E1, A, E2, B, C>(
190
184
  self: Either<E1, A>,
191
185
  fb: Either<E2, B>,
192
186
  f: (a: A, b: B) => C,
193
187
  ): Either<E1 | E2, C> {
188
+ self.concrete();
189
+ fb.concrete();
194
190
  return self._tag === EitherTag.Left ? self : fb._tag === EitherTag.Left ? fb : Right(f(self.right, fb.right));
195
191
  }
196
192
 
193
+ /**
194
+ * @tsplus fluent fncts.Either filterMap
195
+ */
196
+ export function filterMap<E, A, B>(
197
+ self: Either<E, A>,
198
+ f: (a: A) => Maybe<B>,
199
+ /** @tsplus auto */ M: P.Monoid<E>,
200
+ ): Either<E, B> {
201
+ self.concrete();
202
+ return self._tag === EitherTag.Left
203
+ ? self
204
+ : f(self.right).match(
205
+ () => Left(M.nat),
206
+ (b) => Right(b),
207
+ );
208
+ }
209
+
210
+ /**
211
+ * @tsplus fluent fncts.Either filter
212
+ */
213
+ export function filter<E, A>(self: Either<E, A>, f: Predicate<A>, /** @tsplus auto */ M: P.Monoid<E>): Either<E, A> {
214
+ self.concrete();
215
+ return self._tag === EitherTag.Left ? self : f(self.right) ? self : Left(M.nat);
216
+ }
217
+
218
+ /**
219
+ * @tsplus fluent fncts.Either partitionMap
220
+ */
221
+ export function partitionMap<E, A, B, C>(
222
+ self: Either<E, A>,
223
+ f: (a: A) => Either<B, C>,
224
+ /** @tsplus auto */ M: P.Monoid<E>,
225
+ ): readonly [Either<E, B>, Either<E, C>] {
226
+ self.concrete();
227
+ if (self._tag === EitherTag.Left) {
228
+ return [self, self];
229
+ }
230
+ const fb: Either<B, C> = f(self.right);
231
+ fb.concrete();
232
+ switch (fb._tag) {
233
+ case EitherTag.Left:
234
+ return [Right(fb.left), Left(M.nat)];
235
+ case EitherTag.Right:
236
+ return [Left(M.nat), fb];
237
+ }
238
+ }
239
+
240
+ /**
241
+ * @tsplus fluent fncts.Either partition
242
+ */
243
+ export function partition<E, A>(
244
+ self: Either<E, A>,
245
+ p: Predicate<A>,
246
+ /** @tsplus auto */ M: P.Monoid<E>,
247
+ ): readonly [Either<E, A>, Either<E, A>] {
248
+ self.concrete();
249
+ return self._tag === EitherTag.Left ? [self, self] : p(self.right) ? [Left(M.nat), self] : [self, Left(M.nat)];
250
+ }
251
+
197
252
  // codegen:start { preset: barrel, include: api/*.ts }
198
253
  export * from "./api/align.js";
199
254
  export * from "./api/alignWith.js";
@@ -6,37 +6,50 @@ export const enum EitherTag {
6
6
  export const EitherTypeId = Symbol.for("fncts.base.data.Either");
7
7
  export type EitherTypeId = typeof EitherTypeId;
8
8
 
9
+ export interface EitherF extends Either<any, any> {}
10
+ export interface Either1F<E> extends Either1<E, any> {}
11
+
9
12
  /**
10
- * @tsplus type fncts.Either.Left
11
- * @tsplus companion fncts.Either.LeftOps
13
+ * @tsplus type fncts.Either
14
+ * @tsplus companion fncts.EitherOps
12
15
  */
13
- export class Left<E> {
16
+ export class Either<E, A> {
14
17
  readonly _typeId: EitherTypeId = EitherTypeId;
15
- readonly _tag = EitherTag.Left;
16
- constructor(readonly left: E) {}
18
+ readonly [HKT.F]!: EitherF;
19
+ readonly [HKT.E]!: () => E;
20
+ readonly [HKT.A]!: () => A;
21
+ readonly [HKT.T]!: Either<HKT._E<this>, HKT._A<this>>;
17
22
  }
18
23
 
19
- /**
20
- * @tsplus type fncts.Either.Right
21
- * @tsplus companion fncts.Either.RightOps
22
- */
23
- export class Right<A> {
24
- readonly _typeId: EitherTypeId = EitherTypeId;
25
- readonly _tag = EitherTag.Right;
26
- constructor(readonly right: A) {}
24
+ export interface Either1<E, A> {
25
+ readonly _typeId: EitherTypeId;
26
+ readonly [HKT.F]: EitherF;
27
+ readonly [HKT.E]: () => E;
28
+ readonly [HKT.A]: () => A;
29
+ readonly [HKT.T]: Either<E, HKT._A<this>>;
27
30
  }
28
31
 
29
32
  /**
30
- * @tsplus type fncts.Either
33
+ * @tsplus type fncts.Either.Left
34
+ * @tsplus companion fncts.Either.LeftOps
31
35
  */
32
- export type Either<E, A> = Left<E> | Right<A>;
36
+ export class Left<E> extends Either<E, never> {
37
+ readonly _tag = EitherTag.Left;
38
+ constructor(readonly left: E) {
39
+ super();
40
+ }
41
+ }
33
42
 
34
43
  /**
35
- * @tsplus type fncts.EitherOps
44
+ * @tsplus type fncts.Either.Right
45
+ * @tsplus companion fncts.Either.RightOps
36
46
  */
37
- export interface EitherOps {}
38
-
39
- export const Either: EitherOps = {};
47
+ export class Right<A> extends Either<never, A> {
48
+ readonly _tag = EitherTag.Right;
49
+ constructor(readonly right: A) {
50
+ super();
51
+ }
52
+ }
40
53
 
41
54
  /**
42
55
  * @tsplus unify fncts.Either
@@ -46,3 +59,12 @@ export function unifyEither<X extends Either<any, any>>(
46
59
  ): Either<[X] extends [Either<infer E, any>] ? E : never, [X] extends [Either<any, infer A>] ? A : never> {
47
60
  return self;
48
61
  }
62
+
63
+ /**
64
+ * @tsplus fluent fncts.Either concrete
65
+ * @tsplus static fncts.EitherOps concrete
66
+ * @tsplus macro remove
67
+ */
68
+ export function concrete<E, A>(self: Either<E, A>): asserts self is Left<E> | Right<A> {
69
+ //
70
+ }
@@ -4,6 +4,7 @@ import { EitherTag } from "./definition.js";
4
4
  * @tsplus fluent fncts.Either match
5
5
  */
6
6
  export function match_<E, A, B, C>(self: Either<E, A>, left: (e: E) => B, right: (a: A) => C): B | C {
7
+ self.concrete();
7
8
  switch (self._tag) {
8
9
  case EitherTag.Left:
9
10
  return left(self.left);