@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
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @tsplus type fncts.io.Schedule.Interval
3
+ * @tsplus companion fncts.io.Schedule.IntervalOps
4
+ */
5
+ export class Interval {
6
+ constructor(readonly startMilliseconds: number, readonly endMilliseconds: number) {}
7
+ }
8
+
9
+ /**
10
+ * @tsplus static fncts.io.Schedule.IntervalOps after
11
+ */
12
+ export function after(start: number): Interval {
13
+ return Interval(start, Number.MAX_SAFE_INTEGER);
14
+ }
15
+
16
+ /**
17
+ * @tsplus static fncts.io.Schedule.IntervalOps before
18
+ */
19
+ export function before(end: number): Interval {
20
+ return Interval(Number.MIN_SAFE_INTEGER, end);
21
+ }
22
+
23
+ /**
24
+ * @tsplus static fncts.io.Schedule.IntervalOps empty
25
+ */
26
+ export const empty: Interval = new Interval(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);
27
+
28
+ /**
29
+ * @tsplus getter fncts.io.Schedule.Interval isEmpty
30
+ */
31
+ export function isEmpty(self: Interval): boolean {
32
+ return self.startMilliseconds >= self.endMilliseconds;
33
+ }
34
+
35
+ /**
36
+ * @tsplus fluent fncts.io.Schedule.Interval intersect
37
+ */
38
+ export function intersect_(self: Interval, that: Interval): Interval {
39
+ const start = Math.max(self.startMilliseconds, that.startMilliseconds);
40
+ const end = Math.min(self.endMilliseconds, that.endMilliseconds);
41
+ return Interval(start, end);
42
+ }
43
+
44
+ /**
45
+ * @tsplus fluent fncts.io.Schedule.Interval lt
46
+ * @tsplus operator fncts.io.Schedule.Interval <
47
+ */
48
+ export function lt_(self: Interval, that: Interval): boolean {
49
+ return self.min(that) === self;
50
+ }
51
+
52
+ /**
53
+ * @tsplus static fncts.io.Schedule.IntervalOps __call
54
+ */
55
+ export function makeInterval(start: number, end: number): Interval {
56
+ if (start <= end) return Interval(start, end);
57
+ else return Interval.empty;
58
+ }
59
+
60
+ /**
61
+ * @tsplus fluent fncts.io.Schedule.Interval max
62
+ */
63
+ export function max_(self: Interval, that: Interval): Interval {
64
+ const m = self.min(that);
65
+ if (m === self) return that;
66
+ else return self;
67
+ }
68
+
69
+ /**
70
+ * @tsplus fluent fncts.io.Schedule.Interval min
71
+ */
72
+ export function min_(self: Interval, that: Interval): Interval {
73
+ if (self.endMilliseconds <= that.startMilliseconds) return self;
74
+ if (that.endMilliseconds <= self.startMilliseconds) return that;
75
+ if (self.startMilliseconds < that.startMilliseconds) return self;
76
+ if (that.startMilliseconds < self.startMilliseconds) return that;
77
+ if (self.endMilliseconds <= that.endMilliseconds) return self;
78
+ return that;
79
+ }
80
+
81
+ /**
82
+ * @tsplus getter fncts.io.Schedule.Interval isNonEmpty
83
+ */
84
+ export function isNonEmpty(self: Interval): boolean {
85
+ return !self.isEmpty;
86
+ }
87
+
88
+ /**
89
+ * @tsplus getter fncts.io.Schedule.Interval size
90
+ */
91
+ export function size(self: Interval): number {
92
+ return self.endMilliseconds - self.startMilliseconds;
93
+ }
94
+
95
+ /**
96
+ * @tsplus fluent fncts.io.Schedule.Interval union
97
+ */
98
+ export function union_(self: Interval, that: Interval): Maybe<Interval> {
99
+ const istart = Math.max(self.startMilliseconds, that.startMilliseconds);
100
+ const iend = Math.min(self.endMilliseconds, that.endMilliseconds);
101
+ if (istart <= iend) return Nothing();
102
+ else return Just(Interval(istart, iend));
103
+ }
@@ -1,9 +1,6 @@
1
- import type { MaybeF } from "./instances.js";
2
1
  import type { Eq, Monoid } from "@fncts/base/typeclass";
3
2
  import type { Nullable } from "@fncts/base/types";
4
3
 
5
- import { Apply } from "@fncts/base/typeclass";
6
-
7
4
  import { identity } from "../function.js";
8
5
  import { MaybeTag } from "./definition.js";
9
6
 
@@ -11,14 +8,11 @@ import { MaybeTag } from "./definition.js";
11
8
  * @tsplus fluent fncts.Maybe ap
12
9
  */
13
10
  export function ap_<A, B>(self: Maybe<(a: A) => B>, fa: Maybe<A>): Maybe<B> {
11
+ self.concrete();
12
+ fa.concrete();
14
13
  return self._tag === MaybeTag.Just && fa._tag === MaybeTag.Just ? Just(self.value(fa.value)) : Nothing();
15
14
  }
16
15
 
17
- /**
18
- * @tsplus static fncts.MaybeOps sequenceS
19
- */
20
- export const sequenceS = Apply.sequenceSF<MaybeF>({ map_, ap_, zipWith_ });
21
-
22
16
  /**
23
17
  * Applies `f` to the value contained in `Maybe` if it is `Just` and returns the result,
24
18
  * otherwise returns `Nothing`.
@@ -26,23 +20,16 @@ export const sequenceS = Apply.sequenceSF<MaybeF>({ map_, ap_, zipWith_ });
26
20
  * @tsplus fluent fncts.Maybe flatMap
27
21
  */
28
22
  export function flatMap_<A, B>(self: Maybe<A>, f: (a: A) => Maybe<B>): Maybe<B> {
23
+ self.concrete();
29
24
  return self._tag === MaybeTag.Just ? f(self.value) : (self as Nothing);
30
25
  }
31
26
 
32
- /**
33
- * @constrained
34
- */
35
- export function elem_<A>(E: Eq<A>) {
36
- return (self: Maybe<A>, elem: A): boolean => (self._tag === MaybeTag.Just ? E.equals_(self.value, elem) : false);
37
- }
38
-
39
27
  /**
40
28
  * @tsplus fluent fncts.Maybe elem
41
29
  */
42
- export function elemSelf<A>(self: Maybe<A>) {
43
- return (E: Eq<A>) =>
44
- (elem: A): boolean =>
45
- elem_(E)(self, elem);
30
+ export function elem_<A>(self: Maybe<A>, elem: A, E: Eq<A>): boolean {
31
+ self.concrete();
32
+ return self._tag === MaybeTag.Just ? E.equals(self.value, elem) : false;
46
33
  }
47
34
 
48
35
  /**
@@ -50,6 +37,7 @@ export function elemSelf<A>(self: Maybe<A>) {
50
37
  * @tsplus fluent fncts.Maybe exists
51
38
  */
52
39
  export function exists_<A>(self: Maybe<A>, p: Predicate<A>): boolean {
40
+ self.concrete();
53
41
  return self._tag === MaybeTag.Just ? p(self.value) : false;
54
42
  }
55
43
 
@@ -59,6 +47,7 @@ export function exists_<A>(self: Maybe<A>, p: Predicate<A>): boolean {
59
47
  export function filter_<A, B>(self: Maybe<A>, p: Predicate<A>): Maybe<A>;
60
48
  export function filter_<A, B extends A>(self: Maybe<A>, p: Refinement<A, B>): Maybe<B>;
61
49
  export function filter_<A, B>(self: Maybe<A>, p: Predicate<A>): Maybe<A> {
50
+ self.concrete();
62
51
  return self._tag === MaybeTag.Just && p(self.value) ? self : Nothing();
63
52
  }
64
53
 
@@ -82,6 +71,7 @@ export function flatten<A>(self: Maybe<Maybe<A>>): Maybe<A> {
82
71
  export function partition_<A>(self: Maybe<A>, p: Predicate<A>): readonly [Maybe<A>, Maybe<A>];
83
72
  export function partition_<A, B extends A>(self: Maybe<A>, p: Refinement<A, B>): readonly [Maybe<A>, Maybe<B>];
84
73
  export function partition_<A>(self: Maybe<A>, p: Predicate<A>): readonly [Maybe<A>, Maybe<A>] {
74
+ self.concrete();
85
75
  return self._tag === MaybeTag.Just && p(self.value) ? [Nothing(), self] : [self, Nothing()];
86
76
  }
87
77
 
@@ -89,6 +79,7 @@ export function partition_<A>(self: Maybe<A>, p: Predicate<A>): readonly [Maybe<
89
79
  * @tsplus fluent fncts.Maybe partitionMap
90
80
  */
91
81
  export function partitionMap_<A, B, C>(self: Maybe<A>, f: (a: A) => Either<B, C>): readonly [Maybe<B>, Maybe<C>] {
82
+ self.concrete();
92
83
  if (self._tag === MaybeTag.Just) {
93
84
  return f(self.value).match(
94
85
  (b) => [Just(b), Nothing()],
@@ -103,6 +94,7 @@ export function partitionMap_<A, B, C>(self: Maybe<A>, f: (a: A) => Either<B, C>
103
94
  * @tsplus fluent fncts.Maybe foldLeft
104
95
  */
105
96
  export function foldLeft_<A, B>(self: Maybe<A>, b: B, f: (b: B, a: A) => B): B {
97
+ self.concrete();
106
98
  return self._tag === MaybeTag.Just ? f(b, self.value) : b;
107
99
  }
108
100
 
@@ -110,23 +102,16 @@ export function foldLeft_<A, B>(self: Maybe<A>, b: B, f: (b: B, a: A) => B): B {
110
102
  * @tsplus fluent fncts.Maybe foldRight
111
103
  */
112
104
  export function foldRight_<A, B>(self: Maybe<A>, b: B, f: (a: A, b: B) => B): B {
105
+ self.concrete();
113
106
  return self._tag === MaybeTag.Just ? f(self.value, b) : b;
114
107
  }
115
108
 
116
109
  /**
117
- * @constrained
118
- */
119
- export function foldMap_<M>(M: Monoid<M>) {
120
- return <A>(self: Maybe<A>, f: (a: A) => M): M => (self._tag === MaybeTag.Just ? f(self.value) : M.nat);
121
- }
122
-
123
- /**
124
- * @tsplus getter fncts.Maybe foldMap
110
+ * @tsplus fluent fncts.Maybe foldMap
125
111
  */
126
- export function foldMapSelf<A>(self: Maybe<A>) {
127
- return <M>(M: Monoid<M>) =>
128
- (f: (a: A) => M): M =>
129
- foldMap_(M)(self, f);
112
+ export function foldMap_<A, M>(self: Maybe<A>, f: (a: A) => M, /** @tsplus auto */ M: Monoid<M>): M {
113
+ self.concrete();
114
+ return self._tag === MaybeTag.Just ? f(self.value) : M.nat;
130
115
  }
131
116
 
132
117
  /**
@@ -135,6 +120,7 @@ export function foldMapSelf<A>(self: Maybe<A>) {
135
120
  * @tsplus fluent fncts.Maybe getOrElse
136
121
  */
137
122
  export function getOrElse_<A, B>(self: Maybe<A>, orElse: Lazy<B>): A | B {
123
+ self.concrete();
138
124
  return self._tag === MaybeTag.Just ? self.value : orElse();
139
125
  }
140
126
 
@@ -144,6 +130,7 @@ export function getOrElse_<A, B>(self: Maybe<A>, orElse: Lazy<B>): A | B {
144
130
  * @tsplus fluent fncts.Maybe map
145
131
  */
146
132
  export function map_<A, B>(self: Maybe<A>, f: (a: A) => B): Maybe<B> {
133
+ self.concrete();
147
134
  return self._tag === MaybeTag.Just ? Just(f(self.value)) : (self as Nothing);
148
135
  }
149
136
 
@@ -160,6 +147,7 @@ export function mapNullable_<A, B>(self: Maybe<A>, f: (a: A) => Nullable<B>): Ma
160
147
  * @tsplus fluent fncts.Maybe orElse
161
148
  */
162
149
  export function orElse_<A, B>(self: Maybe<A>, fb: Lazy<Maybe<B>>): Maybe<A | B> {
150
+ self.concrete();
163
151
  return self._tag === MaybeTag.Nothing ? fb() : self;
164
152
  }
165
153
 
@@ -176,6 +164,8 @@ export function toUndefined<A>(self: Maybe<A>): A | undefined {
176
164
  * @tsplus fluent fncts.Maybe zipWith
177
165
  */
178
166
  export function zipWith_<A, B, C>(self: Maybe<A>, fb: Maybe<B>, f: (a: A, b: B) => C): Maybe<C> {
167
+ self.concrete();
168
+ fb.concrete();
179
169
  return self._tag === MaybeTag.Just && fb._tag === MaybeTag.Just ? Just(f(self.value, fb.value)) : Nothing();
180
170
  }
181
171
 
@@ -8,17 +8,31 @@ export const enum MaybeTag {
8
8
  export const MaybeTypeId = Symbol.for("fncts.Maybe");
9
9
  export type MaybeTypdId = typeof MaybeTypeId;
10
10
 
11
+ export type MaybeF = Maybe<any>;
12
+
11
13
  const _justHash = Hashable.string("fncts.Just");
12
14
  const _nothingHash = Hashable.string("fncts.Nothing");
13
15
 
16
+ /**
17
+ * @tsplus type fncts.Maybe
18
+ * @tsplus companion fncts.MaybeOps
19
+ */
20
+ export class Maybe<A> {
21
+ readonly _typeId: MaybeTypdId = MaybeTypeId;
22
+ readonly [HKT.F]!: MaybeF;
23
+ readonly [HKT.A]!: () => A;
24
+ readonly [HKT.T]!: Maybe<HKT._A<this>>;
25
+ }
26
+
14
27
  /**
15
28
  * @tsplus type fncts.Just
16
29
  * @tsplus companion fncts.JustOps
17
30
  */
18
- export class Just<A> {
19
- readonly _typeId: MaybeTypdId = MaybeTypeId;
20
- readonly _tag = MaybeTag.Just;
21
- constructor(readonly value: A) {}
31
+ export class Just<A> extends Maybe<A> {
32
+ readonly _tag = MaybeTag.Just;
33
+ constructor(readonly value: A) {
34
+ super();
35
+ }
22
36
  [Symbol.equals](that: unknown): boolean {
23
37
  return isMaybe(that) && that.isJust() && Equatable.strictEquals(this.value, that.value);
24
38
  }
@@ -31,9 +45,8 @@ export class Just<A> {
31
45
  * @tsplus type fncts.Nothing
32
46
  * @tsplus companion fncts.NothingOps
33
47
  */
34
- export class Nothing {
35
- readonly _typeId: MaybeTypdId = MaybeTypeId;
36
- readonly _tag = MaybeTag.Nothing;
48
+ export class Nothing extends Maybe<never> {
49
+ readonly _tag = MaybeTag.Nothing;
37
50
  [Symbol.equals](that: unknown): boolean {
38
51
  return isMaybe(that) && that.isNothing();
39
52
  }
@@ -42,18 +55,6 @@ export class Nothing {
42
55
  }
43
56
  }
44
57
 
45
- /**
46
- * @tsplus type fncts.Maybe
47
- */
48
- export type Maybe<A> = Just<A> | Nothing;
49
-
50
- /**
51
- * @tsplus type fncts.MaybeOps
52
- */
53
- export interface MaybeOps {}
54
-
55
- export const Maybe: MaybeOps = {};
56
-
57
58
  /**
58
59
  * @tsplus unify fncts.Maybe
59
60
  */
@@ -78,6 +79,7 @@ export function isMaybe(u: unknown): u is Maybe<unknown> {
78
79
  * @tsplus fluent fncts.Maybe isJust
79
80
  */
80
81
  export function isJust<A>(self: Maybe<A>): self is Just<A> {
82
+ self.concrete();
81
83
  return self._tag === MaybeTag.Just;
82
84
  }
83
85
 
@@ -87,5 +89,15 @@ export function isJust<A>(self: Maybe<A>): self is Just<A> {
87
89
  * @tsplus fluent fncts.Maybe isNothing
88
90
  */
89
91
  export function isNothing<A>(self: Maybe<A>): self is Nothing {
92
+ self.concrete();
90
93
  return self._tag === MaybeTag.Nothing;
91
94
  }
95
+
96
+ /**
97
+ * @tsplus fluent fncts.Maybe concrete
98
+ * @tsplus static fncts.MaybeOps concrete
99
+ * @tsplus macro remove
100
+ */
101
+ export function concrete<A>(self: Maybe<A>): asserts self is Just<A> | Nothing {
102
+ //
103
+ }
@@ -7,5 +7,6 @@ import { MaybeTag } from "./definition.js";
7
7
  * @tsplus fluent fncts.Maybe match
8
8
  */
9
9
  export function match_<A, B, C>(self: Maybe<A>, nothing: () => B, just: (a: A) => C): B | C {
10
+ self.concrete();
10
11
  return self._tag === MaybeTag.Just ? just(self.value) : nothing();
11
12
  }
@@ -1,6 +1,9 @@
1
- import * as P from "../../typeclass.js";
1
+ import type * as P from "../../typeclass.js";
2
+ import type { MaybeF } from "@fncts/base/data/Maybe/definition";
3
+
4
+ import { MaybeJson } from "@fncts/base/json/MaybeJson";
5
+
2
6
  import {
3
- ap_,
4
7
  filter_,
5
8
  filterMap_,
6
9
  flatMap_,
@@ -9,45 +12,69 @@ import {
9
12
  map_,
10
13
  partition_,
11
14
  partitionMap_,
15
+ zip_,
12
16
  zipWith_,
13
17
  } from "./api.js";
14
18
  import { just } from "./constructors.js";
15
19
 
16
- export interface MaybeF extends HKT {
17
- readonly type: Maybe<this["A"]>;
18
- readonly variance: {
19
- readonly A: "-";
20
- };
21
- }
20
+ export const Functor: P.Functor<MaybeF> = { map: map_ };
22
21
 
23
- export const Functor: P.Functor<MaybeF> = P.Functor({ map_ });
22
+ export const Apply: P.Apply<MaybeF> = { ...Functor, zip: zip_, zipWith: zipWith_ };
24
23
 
25
- export const Apply: P.Apply<MaybeF> = P.Apply({ map_, ap_, zipWith_ });
26
-
27
- export const Applicative: P.Applicative<MaybeF> = P.Applicative({
28
- map_,
29
- ap_,
30
- zipWith_,
24
+ export const Applicative: P.Applicative<MaybeF> = {
25
+ ...Apply,
31
26
  pure: just,
32
- });
27
+ };
33
28
 
34
- export const Monad: P.Monad<MaybeF> = P.Monad({
35
- map_,
36
- ap_,
37
- zipWith_,
38
- pure: just,
39
- flatMap_: flatMap_,
40
- });
29
+ export const Monad: P.Monad<MaybeF> = {
30
+ ...Applicative,
31
+ flatMap: flatMap_,
32
+ };
41
33
 
42
- export const Foldable: P.Foldable<MaybeF> = P.Foldable({
43
- foldLeft_,
44
- foldRight_,
45
- });
34
+ export const Foldable: P.Foldable<MaybeF> = {
35
+ foldLeft: foldLeft_,
36
+ foldRight: foldRight_,
37
+ };
46
38
 
47
- export const Filterable: P.Filterable<MaybeF> = P.Filterable({
48
- map_,
49
- filter_,
50
- filterMap_,
51
- partition_,
52
- partitionMap_,
53
- });
39
+ export const Filterable: P.Filterable<MaybeF> = {
40
+ ...Functor,
41
+ filter: filter_,
42
+ filterMap: filterMap_,
43
+ partition: partition_,
44
+ partitionMap: partitionMap_,
45
+ };
46
+
47
+ /**
48
+ * @tsplus derive fncts.Guard[fncts.Maybe]<_> 10
49
+ */
50
+ export function deriveGuard<A extends Maybe<any>>(
51
+ ...[guard]: [A] extends [Maybe<infer A>] ? [guard: Guard<A>] : never
52
+ ): Guard<A> {
53
+ return Guard((u): u is A => {
54
+ if (Maybe.isMaybe(u)) {
55
+ if (u.isNothing()) {
56
+ return true;
57
+ }
58
+ if (u.isJust()) {
59
+ return guard.is(u.value);
60
+ }
61
+ }
62
+ return false;
63
+ });
64
+ }
65
+
66
+ /**
67
+ * @tsplus derive fncts.Decoder[fncts.Maybe]<_> 10
68
+ */
69
+ export function deriveDecoder<A extends Maybe<any>>(
70
+ ...[value]: [A] extends [Maybe<infer A>] ? [value: Decoder<A>] : never
71
+ ): Decoder<A> {
72
+ const label = `Maybe<${value.label}>`;
73
+ return Decoder(
74
+ (input) =>
75
+ MaybeJson.getDecoder(value)
76
+ .decode(input)
77
+ .map((decoded) => (decoded._tag === "Nothing" ? (Nothing() as A) : (Just(decoded.value) as A))),
78
+ label,
79
+ );
80
+ }
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * @tsplus type fncts.Newtype
3
3
  */
4
- export interface Newtype<URI, A, C = HKT.None> {
4
+ export interface Newtype<URI, A> {
5
5
  readonly _URI: URI;
6
- readonly _A: A;
7
- readonly _C: C;
6
+ readonly [HKT.A]: A;
8
7
  }
9
8
 
10
9
  export declare namespace Newtype {
11
- export type Iso<N extends NewtypeHKT, C = N["type"]["_C"]> = NewtypeIso<N, C>;
10
+ export type Iso<N extends NewtypeHKT> = NewtypeIso<N>;
12
11
  }
13
12
 
14
13
  /**
@@ -19,42 +18,22 @@ export interface NewtypeOps {}
19
18
  export const Newtype: NewtypeOps = {};
20
19
 
21
20
  export interface NewtypeHKT extends HKT {
22
- readonly type: Newtype<any, any>;
21
+ readonly [HKT.T]: Newtype<any, any>;
23
22
  }
24
23
 
25
- export interface NewtypeIso<N extends NewtypeHKT, C = N["type"]["_C"]> {
24
+ export interface NewtypeIso<N extends NewtypeHKT> {
26
25
  /**
27
26
  * @tsplus macro identity
28
27
  */
29
- get: <
30
- K extends HKT.GetExtends<C, "K", any>,
31
- Q extends HKT.GetExtends<C, "Q", any>,
32
- W extends HKT.GetExtends<C, "W", any>,
33
- X extends HKT.GetExtends<C, "X", any>,
34
- I extends HKT.GetExtends<C, "I", any>,
35
- S extends HKT.GetExtends<C, "S", any>,
36
- R extends HKT.GetExtends<C, "E", any>,
37
- E extends HKT.GetExtends<C, "E", any>,
38
- A extends HKT.GetExtends<C, "A", any>,
39
- >(
40
- _: HKT.Kind<N, N["type"]["_C"], K, Q, W, X, I, S, R, E, A>["_A"],
41
- ) => HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>;
28
+ get: <K, Q, W, X, I, S, R, E, A>(
29
+ _: HKT.Kind<N, K, Q, W, X, I, S, R, E, A>[HKT.A],
30
+ ) => HKT.Kind<N, K, Q, W, X, I, S, R, E, A>;
42
31
  /**
43
32
  * @tsplus macro identity
44
33
  */
45
- reverseGet: <
46
- K extends HKT.GetExtends<C, "K", any>,
47
- Q extends HKT.GetExtends<C, "Q", any>,
48
- W extends HKT.GetExtends<C, "W", any>,
49
- X extends HKT.GetExtends<C, "X", any>,
50
- I extends HKT.GetExtends<C, "I", any>,
51
- S extends HKT.GetExtends<C, "S", any>,
52
- R extends HKT.GetExtends<C, "E", any>,
53
- E extends HKT.GetExtends<C, "E", any>,
54
- A extends HKT.GetExtends<C, "A", any>,
55
- >(
56
- _: HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>,
57
- ) => HKT.Kind<N, HKT.None, K, Q, W, X, I, S, R, E, A>["_A"];
34
+ reverseGet: <K, Q, W, X, I, S, R, E, A>(
35
+ _: HKT.Kind<N, K, Q, W, X, I, S, R, E, A>,
36
+ ) => HKT.Kind<N, K, Q, W, X, I, S, R, E, A>[HKT.A];
58
37
  }
59
38
 
60
39
  /**
@@ -49,7 +49,7 @@ const OrdEnvironmentMap = Number.Ord.contramap((_: readonly [Tag<unknown>, reado
49
49
  * @tsplus static fncts.Environment.PatchOps diff
50
50
  */
51
51
  export function diff<In, Out>(oldValue: Environment<In>, newValue: Environment<Out>): Patch<In, Out> {
52
- const sorted = newValue.map.toArray.sort(OrdEnvironmentMap.compare_);
52
+ const sorted = newValue.map.toArray.sort(OrdEnvironmentMap.compare);
53
53
  const [missingServices, patch] = sorted.foldLeft(
54
54
  [oldValue.map.beginMutation, Patch.empty() as Patch<any, any>],
55
55
  ([map, patch], [tag, [newService, newIndex]]) =>
@@ -2,8 +2,10 @@
2
2
  * @tsplus fluent fncts.Refinement and
3
3
  * @tsplus operator fncts.Refinement &&
4
4
  */
5
- export function and<A, B extends A, C extends B>(self: Refinement<A, B>, that: Refinement<B, C>): Refinement<A, C> {
6
- return (a): a is C => self(a) && that(a);
5
+ export function and<A, B extends A, C extends B>(self: Refinement<A, B>, that: Refinement<B, C>): Refinement<A, C>;
6
+ export function and<A, B extends A>(self: Refinement<A, B>, that: Predicate<B>): Refinement<A, B>;
7
+ export function and<A, B extends A>(self: Refinement<A, B>, that: Predicate<B>): Refinement<A, B> {
8
+ return (a): a is B => self(a) && that(a);
7
9
  }
8
10
 
9
11
  /**
@@ -1,5 +1,5 @@
1
1
  interface StructN extends HKT {
2
- readonly type: Struct<this["A"]>;
2
+ readonly [HKT.T]: Struct<HKT._A<this>>;
3
3
  }
4
4
 
5
5
  /**