@fncts/base 0.0.12 → 0.0.13

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 (473) hide show
  1. package/_cjs/collection/Iterable/api/traverseConc.cjs +16 -21
  2. package/_cjs/collection/Iterable/api/traverseConc.cjs.map +1 -1
  3. package/_cjs/collection/compat/Record/instances.cjs +67 -16
  4. package/_cjs/collection/compat/Record/instances.cjs.map +1 -1
  5. package/_cjs/collection/immutable/Conc/api.cjs +9 -12
  6. package/_cjs/collection/immutable/Conc/api.cjs.map +1 -1
  7. package/_cjs/collection/immutable/Conc/definition.cjs +41 -43
  8. package/_cjs/collection/immutable/Conc/definition.cjs.map +1 -1
  9. package/_cjs/collection/immutable/Dictionary/definition.cjs +2 -4
  10. package/_cjs/collection/immutable/Dictionary/definition.cjs.map +1 -1
  11. package/_cjs/collection/immutable/HashMap/api.cjs +26 -29
  12. package/_cjs/collection/immutable/HashMap/api.cjs.map +1 -1
  13. package/_cjs/collection/immutable/HashMap/definition.cjs +15 -17
  14. package/_cjs/collection/immutable/HashMap/definition.cjs.map +1 -1
  15. package/_cjs/collection/immutable/ImmutableArray/api.cjs +136 -153
  16. package/_cjs/collection/immutable/ImmutableArray/api.cjs.map +1 -1
  17. package/_cjs/collection/immutable/ImmutableArray/definition.cjs +10 -12
  18. package/_cjs/collection/immutable/ImmutableArray/definition.cjs.map +1 -1
  19. package/_cjs/collection/immutable/ImmutableArray/instances.cjs +11 -9
  20. package/_cjs/collection/immutable/ImmutableArray/instances.cjs.map +1 -1
  21. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs +21 -22
  22. package/_cjs/collection/immutable/ImmutableNonEmptyArray/api.cjs.map +1 -1
  23. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs +3 -9
  24. package/_cjs/collection/immutable/ImmutableNonEmptyArray/definition.cjs.map +1 -1
  25. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs +8 -2
  26. package/_cjs/collection/immutable/ImmutableNonEmptyArray/instances.cjs.map +1 -1
  27. package/_cjs/collection/immutable/RoseTree/definition.cjs +13 -15
  28. package/_cjs/collection/immutable/RoseTree/definition.cjs.map +1 -1
  29. package/_cjs/collection/immutable/Vector/api.cjs +8 -12
  30. package/_cjs/collection/immutable/Vector/api.cjs.map +1 -1
  31. package/_cjs/collection/immutable/Vector/definition.cjs +11 -13
  32. package/_cjs/collection/immutable/Vector/definition.cjs.map +1 -1
  33. package/_cjs/collection/weak/IterableWeakMap.cjs +51 -2
  34. package/_cjs/collection/weak/IterableWeakMap.cjs.map +1 -1
  35. package/_cjs/collection/weak/IterableWeakSet.cjs +59 -7
  36. package/_cjs/collection/weak/IterableWeakSet.cjs.map +1 -1
  37. package/_cjs/control/Eval/api.cjs +9 -3
  38. package/_cjs/control/Eval/api.cjs.map +1 -1
  39. package/_cjs/control/Eval/definition.cjs +0 -7
  40. package/_cjs/control/Eval/definition.cjs.map +1 -1
  41. package/_cjs/control/Eval/instance.cjs +6 -0
  42. package/_cjs/control/Eval/instance.cjs.map +1 -1
  43. package/_cjs/control/Z/api.cjs +16 -14
  44. package/_cjs/control/Z/api.cjs.map +1 -1
  45. package/_cjs/control/Z/definition.cjs +9 -14
  46. package/_cjs/control/Z/definition.cjs.map +1 -1
  47. package/_cjs/control/Z/instances.cjs +6 -0
  48. package/_cjs/control/Z/instances.cjs.map +1 -1
  49. package/_cjs/control/Z/runtime.cjs +15 -13
  50. package/_cjs/control/Z/runtime.cjs.map +1 -1
  51. package/_cjs/data/Const/definition.cjs +0 -7
  52. package/_cjs/data/Const/definition.cjs.map +1 -1
  53. package/_cjs/data/Const/instances.cjs +7 -5
  54. package/_cjs/data/Const/instances.cjs.map +1 -1
  55. package/_cjs/data/Datum/api.cjs +479 -0
  56. package/_cjs/data/Datum/api.cjs.map +1 -0
  57. package/_cjs/data/Datum/definition.cjs +142 -0
  58. package/_cjs/data/Datum/definition.cjs.map +1 -0
  59. package/_cjs/data/Datum/instances.cjs +69 -0
  60. package/_cjs/data/Datum/instances.cjs.map +1 -0
  61. package/_cjs/data/DatumEither/api.cjs +365 -0
  62. package/_cjs/data/DatumEither/api.cjs.map +1 -0
  63. package/_cjs/data/DatumEither/definition.cjs +9 -0
  64. package/_cjs/data/DatumEither/definition.cjs.map +1 -0
  65. package/_cjs/data/DecodeError/definition.cjs +3 -3
  66. package/_cjs/data/DecodeError/definition.cjs.map +1 -1
  67. package/_cjs/data/Decoder/definition.cjs +3 -10
  68. package/_cjs/data/Decoder/definition.cjs.map +1 -1
  69. package/_cjs/data/Either/api.cjs +21 -5
  70. package/_cjs/data/Either/api.cjs.map +1 -1
  71. package/_cjs/data/Either/definition.cjs +3 -10
  72. package/_cjs/data/Either/definition.cjs.map +1 -1
  73. package/_cjs/data/Either/instances.cjs +25 -23
  74. package/_cjs/data/Either/instances.cjs.map +1 -1
  75. package/_cjs/data/EitherT/api.cjs +106 -0
  76. package/_cjs/data/EitherT/api.cjs.map +1 -0
  77. package/_cjs/data/EitherT/definition.cjs +9 -0
  78. package/_cjs/data/EitherT/definition.cjs.map +1 -0
  79. package/_cjs/data/Environment/api.cjs +15 -14
  80. package/_cjs/data/Environment/api.cjs.map +1 -1
  81. package/_cjs/data/Environment/definition.cjs.map +1 -1
  82. package/_cjs/data/Identity/api.cjs +3 -1
  83. package/_cjs/data/Identity/api.cjs.map +1 -1
  84. package/_cjs/data/Identity/definition.cjs +2 -4
  85. package/_cjs/data/Identity/definition.cjs.map +1 -1
  86. package/_cjs/data/Identity/instances.cjs +6 -0
  87. package/_cjs/data/Identity/instances.cjs.map +1 -1
  88. package/_cjs/data/Intervals.cjs +292 -0
  89. package/_cjs/data/Intervals.cjs.map +1 -0
  90. package/_cjs/data/Maybe/api.cjs +3 -1
  91. package/_cjs/data/Maybe/api.cjs.map +1 -1
  92. package/_cjs/data/Maybe/definition.cjs +11 -13
  93. package/_cjs/data/Maybe/definition.cjs.map +1 -1
  94. package/_cjs/data/Maybe/instances.cjs +13 -11
  95. package/_cjs/data/Maybe/instances.cjs.map +1 -1
  96. package/_cjs/data/Newtype.cjs +3 -5
  97. package/_cjs/data/Newtype.cjs.map +1 -1
  98. package/_cjs/data/Struct/definition.cjs +2 -4
  99. package/_cjs/data/Struct/definition.cjs.map +1 -1
  100. package/_cjs/data/Zipped.cjs +55 -0
  101. package/_cjs/data/Zipped.cjs.map +1 -0
  102. package/_cjs/data/function/api.cjs +10 -0
  103. package/_cjs/data/function/api.cjs.map +1 -1
  104. package/_cjs/data/object/instances.cjs +9 -1
  105. package/_cjs/data/object/instances.cjs.map +1 -1
  106. package/_cjs/optics/Optional/definition.cjs +4 -6
  107. package/_cjs/optics/Optional/definition.cjs.map +1 -1
  108. package/_cjs/optics/Traversal/api/compose.cjs +1 -1
  109. package/_cjs/optics/Traversal/api/compose.cjs.map +1 -1
  110. package/_cjs/optics/Traversal/api/fromTraversable.cjs +1 -1
  111. package/_cjs/optics/Traversal/api/fromTraversable.cjs.map +1 -1
  112. package/_cjs/optics/Traversal/definition.cjs +3 -3
  113. package/_cjs/optics/Traversal/definition.cjs.map +1 -1
  114. package/_cjs/typeclass/Alt.cjs +0 -7
  115. package/_cjs/typeclass/Alt.cjs.map +1 -1
  116. package/_cjs/typeclass/ApplicativeExcept.cjs +9 -35
  117. package/_cjs/typeclass/ApplicativeExcept.cjs.map +1 -1
  118. package/_cjs/typeclass/Apply.cjs +39 -66
  119. package/_cjs/typeclass/Apply.cjs.map +1 -1
  120. package/_cjs/typeclass/Chain.cjs +6 -28
  121. package/_cjs/typeclass/Chain.cjs.map +1 -1
  122. package/_cjs/typeclass/Fail.cjs +0 -10
  123. package/_cjs/typeclass/Fail.cjs.map +1 -1
  124. package/_cjs/typeclass/Filterable.cjs +0 -36
  125. package/_cjs/typeclass/Filterable.cjs.map +1 -1
  126. package/_cjs/typeclass/Foldable.cjs +4 -34
  127. package/_cjs/typeclass/Foldable.cjs.map +1 -1
  128. package/_cjs/typeclass/FoldableWithIndex.cjs +4 -34
  129. package/_cjs/typeclass/FoldableWithIndex.cjs.map +1 -1
  130. package/_cjs/typeclass/Functor.cjs +3 -18
  131. package/_cjs/typeclass/Functor.cjs.map +1 -1
  132. package/_cjs/typeclass/Guard/definition.cjs +3 -10
  133. package/_cjs/typeclass/Guard/definition.cjs.map +1 -1
  134. package/_cjs/typeclass/MonadExcept.cjs +2 -10
  135. package/_cjs/typeclass/MonadExcept.cjs.map +1 -1
  136. package/_cjs/typeclass/Nil.cjs +0 -10
  137. package/_cjs/typeclass/Nil.cjs.map +1 -1
  138. package/_cjs/typeclass/Pointed.cjs +0 -11
  139. package/_cjs/typeclass/Pointed.cjs.map +1 -1
  140. package/_cjs/typeclass/Semialign.cjs +18 -46
  141. package/_cjs/typeclass/Semialign.cjs.map +1 -1
  142. package/_cjs/typeclass/Semimonoidal.cjs +0 -11
  143. package/_cjs/typeclass/Semimonoidal.cjs.map +1 -1
  144. package/_cjs/typeclass/Showable/show.cjs +12 -12
  145. package/_cjs/typeclass/Showable/show.cjs.map +1 -1
  146. package/_cjs/typeclass/Traversable.cjs +7 -26
  147. package/_cjs/typeclass/Traversable.cjs.map +1 -1
  148. package/_cjs/typeclass/TraversableWithIndex.cjs +3 -7
  149. package/_cjs/typeclass/TraversableWithIndex.cjs.map +1 -1
  150. package/_cjs/typeclass/Witherable.cjs +3 -45
  151. package/_cjs/typeclass/Witherable.cjs.map +1 -1
  152. package/_cjs/typeclass/WitherableWithIndex.cjs +8 -44
  153. package/_cjs/typeclass/WitherableWithIndex.cjs.map +1 -1
  154. package/_mjs/collection/Iterable/api/traverseConc.mjs +16 -21
  155. package/_mjs/collection/Iterable/api/traverseConc.mjs.map +1 -1
  156. package/_mjs/collection/compat/Record/instances.mjs +62 -16
  157. package/_mjs/collection/compat/Record/instances.mjs.map +1 -1
  158. package/_mjs/collection/immutable/Conc/api.mjs +7 -11
  159. package/_mjs/collection/immutable/Conc/api.mjs.map +1 -1
  160. package/_mjs/collection/immutable/Conc/definition.mjs +41 -42
  161. package/_mjs/collection/immutable/Conc/definition.mjs.map +1 -1
  162. package/_mjs/collection/immutable/Dictionary/definition.mjs +2 -3
  163. package/_mjs/collection/immutable/Dictionary/definition.mjs.map +1 -1
  164. package/_mjs/collection/immutable/HashMap/api.mjs +18 -20
  165. package/_mjs/collection/immutable/HashMap/api.mjs.map +1 -1
  166. package/_mjs/collection/immutable/HashMap/definition.mjs +15 -16
  167. package/_mjs/collection/immutable/HashMap/definition.mjs.map +1 -1
  168. package/_mjs/collection/immutable/ImmutableArray/api.mjs +128 -147
  169. package/_mjs/collection/immutable/ImmutableArray/api.mjs.map +1 -1
  170. package/_mjs/collection/immutable/ImmutableArray/definition.mjs +10 -11
  171. package/_mjs/collection/immutable/ImmutableArray/definition.mjs.map +1 -1
  172. package/_mjs/collection/immutable/ImmutableArray/instances.mjs +9 -8
  173. package/_mjs/collection/immutable/ImmutableArray/instances.mjs.map +1 -1
  174. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs +18 -19
  175. package/_mjs/collection/immutable/ImmutableNonEmptyArray/api.mjs.map +1 -1
  176. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs +0 -2
  177. package/_mjs/collection/immutable/ImmutableNonEmptyArray/definition.mjs.map +1 -1
  178. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs +4 -3
  179. package/_mjs/collection/immutable/ImmutableNonEmptyArray/instances.mjs.map +1 -1
  180. package/_mjs/collection/immutable/RoseTree/definition.mjs +13 -14
  181. package/_mjs/collection/immutable/RoseTree/definition.mjs.map +1 -1
  182. package/_mjs/collection/immutable/Vector/api.mjs +8 -12
  183. package/_mjs/collection/immutable/Vector/api.mjs.map +1 -1
  184. package/_mjs/collection/immutable/Vector/definition.mjs +11 -12
  185. package/_mjs/collection/immutable/Vector/definition.mjs.map +1 -1
  186. package/_mjs/collection/weak/IterableWeakMap.mjs +51 -2
  187. package/_mjs/collection/weak/IterableWeakMap.mjs.map +1 -1
  188. package/_mjs/collection/weak/IterableWeakSet.mjs +59 -7
  189. package/_mjs/collection/weak/IterableWeakSet.mjs.map +1 -1
  190. package/_mjs/control/Eval/api.mjs +9 -4
  191. package/_mjs/control/Eval/api.mjs.map +1 -1
  192. package/_mjs/control/Eval/definition.mjs +0 -1
  193. package/_mjs/control/Eval/definition.mjs.map +1 -1
  194. package/_mjs/control/Eval/instance.mjs +1 -0
  195. package/_mjs/control/Eval/instance.mjs.map +1 -1
  196. package/_mjs/control/Z/api.mjs +16 -15
  197. package/_mjs/control/Z/api.mjs.map +1 -1
  198. package/_mjs/control/Z/definition.mjs +4 -5
  199. package/_mjs/control/Z/definition.mjs.map +1 -1
  200. package/_mjs/control/Z/instances.mjs +1 -0
  201. package/_mjs/control/Z/instances.mjs.map +1 -1
  202. package/_mjs/control/Z/runtime.mjs +14 -13
  203. package/_mjs/control/Z/runtime.mjs.map +1 -1
  204. package/_mjs/data/Const/definition.mjs +0 -3
  205. package/_mjs/data/Const/definition.mjs.map +1 -1
  206. package/_mjs/data/Const/instances.mjs +6 -5
  207. package/_mjs/data/Const/instances.mjs.map +1 -1
  208. package/_mjs/data/Datum/api.mjs +403 -0
  209. package/_mjs/data/Datum/api.mjs.map +1 -0
  210. package/_mjs/data/Datum/definition.mjs +112 -0
  211. package/_mjs/data/Datum/definition.mjs.map +1 -0
  212. package/_mjs/data/Datum/instances.mjs +52 -0
  213. package/_mjs/data/Datum/instances.mjs.map +1 -0
  214. package/_mjs/data/DatumEither/api.mjs +290 -0
  215. package/_mjs/data/DatumEither/api.mjs.map +1 -0
  216. package/_mjs/data/DatumEither/definition.mjs +2 -0
  217. package/_mjs/data/DatumEither/definition.mjs.map +1 -0
  218. package/_mjs/data/DecodeError/definition.mjs +3 -3
  219. package/_mjs/data/DecodeError/definition.mjs.map +1 -1
  220. package/_mjs/data/Decoder/definition.mjs +0 -2
  221. package/_mjs/data/Decoder/definition.mjs.map +1 -1
  222. package/_mjs/data/Either/api.mjs +16 -3
  223. package/_mjs/data/Either/api.mjs.map +1 -1
  224. package/_mjs/data/Either/definition.mjs +0 -2
  225. package/_mjs/data/Either/definition.mjs.map +1 -1
  226. package/_mjs/data/Either/instances.mjs +23 -22
  227. package/_mjs/data/Either/instances.mjs.map +1 -1
  228. package/_mjs/data/EitherT/api.mjs +73 -0
  229. package/_mjs/data/EitherT/api.mjs.map +1 -0
  230. package/_mjs/data/EitherT/definition.mjs +2 -0
  231. package/_mjs/data/EitherT/definition.mjs.map +1 -0
  232. package/_mjs/data/Environment/api.mjs +12 -13
  233. package/_mjs/data/Environment/api.mjs.map +1 -1
  234. package/_mjs/data/Environment/definition.mjs.map +1 -1
  235. package/_mjs/data/Identity/api.mjs +2 -1
  236. package/_mjs/data/Identity/api.mjs.map +1 -1
  237. package/_mjs/data/Identity/definition.mjs +2 -3
  238. package/_mjs/data/Identity/definition.mjs.map +1 -1
  239. package/_mjs/data/Identity/instances.mjs +1 -0
  240. package/_mjs/data/Identity/instances.mjs.map +1 -1
  241. package/_mjs/data/Intervals.mjs +257 -0
  242. package/_mjs/data/Intervals.mjs.map +1 -0
  243. package/_mjs/data/Maybe/api.mjs +2 -1
  244. package/_mjs/data/Maybe/api.mjs.map +1 -1
  245. package/_mjs/data/Maybe/definition.mjs +8 -10
  246. package/_mjs/data/Maybe/definition.mjs.map +1 -1
  247. package/_mjs/data/Maybe/instances.mjs +12 -11
  248. package/_mjs/data/Maybe/instances.mjs.map +1 -1
  249. package/_mjs/data/Newtype.mjs +3 -4
  250. package/_mjs/data/Newtype.mjs.map +1 -1
  251. package/_mjs/data/Struct/definition.mjs +2 -3
  252. package/_mjs/data/Struct/definition.mjs.map +1 -1
  253. package/_mjs/data/Zipped.mjs +37 -0
  254. package/_mjs/data/Zipped.mjs.map +1 -0
  255. package/_mjs/data/function/api.mjs +8 -0
  256. package/_mjs/data/function/api.mjs.map +1 -1
  257. package/_mjs/data/object/instances.mjs +7 -1
  258. package/_mjs/data/object/instances.mjs.map +1 -1
  259. package/_mjs/optics/Optional/definition.mjs +4 -5
  260. package/_mjs/optics/Optional/definition.mjs.map +1 -1
  261. package/_mjs/optics/Traversal/api/compose.mjs +1 -1
  262. package/_mjs/optics/Traversal/api/compose.mjs.map +1 -1
  263. package/_mjs/optics/Traversal/api/fromTraversable.mjs +1 -1
  264. package/_mjs/optics/Traversal/api/fromTraversable.mjs.map +1 -1
  265. package/_mjs/optics/Traversal/definition.mjs +3 -3
  266. package/_mjs/optics/Traversal/definition.mjs.map +1 -1
  267. package/_mjs/typeclass/Alt.mjs +0 -5
  268. package/_mjs/typeclass/Alt.mjs.map +1 -1
  269. package/_mjs/typeclass/ApplicativeExcept.mjs +7 -32
  270. package/_mjs/typeclass/ApplicativeExcept.mjs.map +1 -1
  271. package/_mjs/typeclass/Apply.mjs +35 -65
  272. package/_mjs/typeclass/Apply.mjs.map +1 -1
  273. package/_mjs/typeclass/Chain.mjs +4 -25
  274. package/_mjs/typeclass/Chain.mjs.map +1 -1
  275. package/_mjs/typeclass/Fail.mjs +1 -8
  276. package/_mjs/typeclass/Fail.mjs.map +1 -1
  277. package/_mjs/typeclass/Filterable.mjs +0 -28
  278. package/_mjs/typeclass/Filterable.mjs.map +1 -1
  279. package/_mjs/typeclass/Foldable.mjs +3 -30
  280. package/_mjs/typeclass/Foldable.mjs.map +1 -1
  281. package/_mjs/typeclass/FoldableWithIndex.mjs +3 -30
  282. package/_mjs/typeclass/FoldableWithIndex.mjs.map +1 -1
  283. package/_mjs/typeclass/Functor.mjs +3 -16
  284. package/_mjs/typeclass/Functor.mjs.map +1 -1
  285. package/_mjs/typeclass/Guard/definition.mjs +0 -2
  286. package/_mjs/typeclass/Guard/definition.mjs.map +1 -1
  287. package/_mjs/typeclass/MonadExcept.mjs +2 -9
  288. package/_mjs/typeclass/MonadExcept.mjs.map +1 -1
  289. package/_mjs/typeclass/Nil.mjs +1 -8
  290. package/_mjs/typeclass/Nil.mjs.map +1 -1
  291. package/_mjs/typeclass/Pointed.mjs +0 -9
  292. package/_mjs/typeclass/Pointed.mjs.map +1 -1
  293. package/_mjs/typeclass/Semialign.mjs +17 -45
  294. package/_mjs/typeclass/Semialign.mjs.map +1 -1
  295. package/_mjs/typeclass/Semimonoidal.mjs +0 -9
  296. package/_mjs/typeclass/Semimonoidal.mjs.map +1 -1
  297. package/_mjs/typeclass/Showable/show.mjs +12 -12
  298. package/_mjs/typeclass/Showable/show.mjs.map +1 -1
  299. package/_mjs/typeclass/Traversable.mjs +6 -25
  300. package/_mjs/typeclass/Traversable.mjs.map +1 -1
  301. package/_mjs/typeclass/TraversableWithIndex.mjs +2 -6
  302. package/_mjs/typeclass/TraversableWithIndex.mjs.map +1 -1
  303. package/_mjs/typeclass/Witherable.mjs +3 -40
  304. package/_mjs/typeclass/Witherable.mjs.map +1 -1
  305. package/_mjs/typeclass/WitherableWithIndex.mjs +6 -41
  306. package/_mjs/typeclass/WitherableWithIndex.mjs.map +1 -1
  307. package/_src/collection/Iterable/api/traverseConc.ts +24 -21
  308. package/_src/collection/compat/Record/instances.ts +44 -0
  309. package/_src/collection/immutable/Conc/api.ts +9 -11
  310. package/_src/collection/immutable/Conc/definition.ts +9 -5
  311. package/_src/collection/immutable/Dictionary/definition.ts +1 -1
  312. package/_src/collection/immutable/HashMap/api.ts +20 -17
  313. package/_src/collection/immutable/HashMap/definition.ts +10 -6
  314. package/_src/collection/immutable/ImmutableArray/api.ts +56 -113
  315. package/_src/collection/immutable/ImmutableArray/definition.ts +8 -5
  316. package/_src/collection/immutable/ImmutableArray/instances.ts +42 -42
  317. package/_src/collection/immutable/ImmutableNonEmptyArray/api.ts +13 -11
  318. package/_src/collection/immutable/ImmutableNonEmptyArray/definition.ts +8 -3
  319. package/_src/collection/immutable/ImmutableNonEmptyArray/instances.ts +24 -25
  320. package/_src/collection/immutable/RoseTree/definition.ts +7 -4
  321. package/_src/collection/immutable/Vector/api.ts +12 -16
  322. package/_src/collection/immutable/Vector/definition.ts +9 -9
  323. package/_src/collection/weak/IterableWeakMap.ts +50 -5
  324. package/_src/collection/weak/IterableWeakSet.ts +57 -9
  325. package/_src/control/Eval/api.ts +5 -2
  326. package/_src/control/Eval/definition.ts +7 -4
  327. package/_src/control/Eval/instance.ts +7 -7
  328. package/_src/control/Z/api.ts +16 -25
  329. package/_src/control/Z/definition.ts +32 -31
  330. package/_src/control/Z/instances.ts +3 -3
  331. package/_src/control/Z/runtime.ts +7 -7
  332. package/_src/data/Const/definition.ts +9 -17
  333. package/_src/data/Const/instances.ts +5 -5
  334. package/_src/data/Datum/api.ts +376 -0
  335. package/_src/data/Datum/definition.ts +102 -0
  336. package/_src/data/Datum/instances.ts +34 -0
  337. package/_src/data/DatumEither/api.ts +348 -0
  338. package/_src/data/DatumEither/definition.ts +20 -0
  339. package/_src/data/DecodeError/definition.ts +3 -3
  340. package/_src/data/Decoder/definition.ts +7 -4
  341. package/_src/data/Either/api.ts +12 -2
  342. package/_src/data/Either/definition.ts +9 -14
  343. package/_src/data/Either/instances.ts +6 -6
  344. package/_src/data/EitherT/api.ts +239 -0
  345. package/_src/data/EitherT/definition.ts +23 -0
  346. package/_src/data/Environment/api.ts +8 -6
  347. package/_src/data/Environment/definition.ts +2 -2
  348. package/_src/data/Identity/api.ts +2 -2
  349. package/_src/data/Identity/definition.ts +2 -2
  350. package/_src/data/Identity/instances.ts +7 -7
  351. package/_src/data/Intervals.ts +126 -0
  352. package/_src/data/Maybe/api.ts +2 -2
  353. package/_src/data/Maybe/definition.ts +7 -4
  354. package/_src/data/Maybe/instances.ts +10 -10
  355. package/_src/data/Newtype.ts +32 -11
  356. package/_src/data/Struct/definition.ts +1 -1
  357. package/_src/data/Tag/definition.ts +2 -2
  358. package/_src/data/Zipped.ts +52 -0
  359. package/_src/data/function/api.ts +8 -0
  360. package/_src/data/object/instances.ts +11 -1
  361. package/_src/optics/Optional/definition.ts +2 -2
  362. package/_src/optics/Traversal/api/compose.ts +1 -1
  363. package/_src/optics/Traversal/api/fromTraversable.ts +11 -11
  364. package/_src/optics/Traversal/definition.ts +13 -12
  365. package/_src/typeclass/Align.ts +1 -1
  366. package/_src/typeclass/Alt.ts +24 -54
  367. package/_src/typeclass/Alternative.ts +1 -1
  368. package/_src/typeclass/Applicative.ts +6 -1
  369. package/_src/typeclass/ApplicativeExcept.ts +55 -81
  370. package/_src/typeclass/Apply.ts +224 -253
  371. package/_src/typeclass/Chain.ts +71 -98
  372. package/_src/typeclass/Fail.ts +10 -28
  373. package/_src/typeclass/Filterable.ts +13 -67
  374. package/_src/typeclass/FilterableWithIndex.ts +13 -13
  375. package/_src/typeclass/Foldable.ts +16 -35
  376. package/_src/typeclass/FoldableWithIndex.ts +14 -37
  377. package/_src/typeclass/Functor.ts +11 -21
  378. package/_src/typeclass/FunctorWithIndex.ts +4 -4
  379. package/_src/typeclass/Guard/definition.ts +1 -3
  380. package/_src/typeclass/Monad.ts +1 -1
  381. package/_src/typeclass/MonadExcept.ts +11 -7
  382. package/_src/typeclass/Nil.ts +10 -27
  383. package/_src/typeclass/Pointed.ts +11 -30
  384. package/_src/typeclass/Semialign.ts +285 -253
  385. package/_src/typeclass/Semimonoidal.ts +23 -54
  386. package/_src/typeclass/Showable/show.ts +8 -10
  387. package/_src/typeclass/Traversable.ts +45 -63
  388. package/_src/typeclass/TraversableWithIndex.ts +37 -34
  389. package/_src/typeclass/Witherable.ts +28 -115
  390. package/_src/typeclass/WitherableWithIndex.ts +82 -115
  391. package/_src/types/extractions.ts +1 -1
  392. package/collection/Iterable/api/traverseConc.d.ts +4 -6
  393. package/collection/compat/Record/instances.d.ts +12 -0
  394. package/collection/immutable/Conc/api.d.ts +4 -6
  395. package/collection/immutable/Conc/definition.d.ts +9 -6
  396. package/collection/immutable/Dictionary/definition.d.ts +1 -1
  397. package/collection/immutable/HashMap/api.d.ts +13 -13
  398. package/collection/immutable/HashMap/definition.d.ts +10 -7
  399. package/collection/immutable/ImmutableArray/api.d.ts +16 -18
  400. package/collection/immutable/ImmutableArray/definition.d.ts +8 -6
  401. package/collection/immutable/ImmutableArray/instances.d.ts +17 -17
  402. package/collection/immutable/ImmutableNonEmptyArray/api.d.ts +6 -5
  403. package/collection/immutable/ImmutableNonEmptyArray/definition.d.ts +7 -3
  404. package/collection/immutable/ImmutableNonEmptyArray/instances.d.ts +10 -10
  405. package/collection/immutable/RoseTree/definition.d.ts +7 -5
  406. package/collection/immutable/Vector/api.d.ts +4 -4
  407. package/collection/immutable/Vector/definition.d.ts +8 -9
  408. package/collection/weak/IterableWeakMap.d.ts +9 -3
  409. package/collection/weak/IterableWeakSet.d.ts +10 -4
  410. package/control/Eval/api.d.ts +6 -1
  411. package/control/Eval/definition.d.ts +6 -4
  412. package/control/Eval/instance.d.ts +3 -3
  413. package/control/Z/api.d.ts +8 -6
  414. package/control/Z/definition.d.ts +38 -32
  415. package/control/Z/instances.d.ts +2 -2
  416. package/control/Z/runtime.d.ts +5 -4
  417. package/data/Const/definition.d.ts +8 -16
  418. package/data/Const/instances.d.ts +4 -3
  419. package/data/Datum/api.d.ts +188 -0
  420. package/data/Datum/definition.d.ts +75 -0
  421. package/data/Datum/instances.d.ts +32 -0
  422. package/data/DatumEither/api.d.ts +169 -0
  423. package/data/DatumEither/definition.d.ts +21 -0
  424. package/data/Decoder/definition.d.ts +6 -4
  425. package/data/Either/api.d.ts +10 -0
  426. package/data/Either/definition.d.ts +8 -14
  427. package/data/Either/instances.d.ts +4 -3
  428. package/data/EitherT/api.d.ts +60 -0
  429. package/data/EitherT/definition.d.ts +12 -0
  430. package/data/Environment/api.d.ts +7 -5
  431. package/data/Environment/definition.d.ts +3 -3
  432. package/data/Identity/api.d.ts +2 -1
  433. package/data/Identity/definition.d.ts +2 -2
  434. package/data/Identity/instances.d.ts +3 -3
  435. package/data/Intervals.d.ts +53 -0
  436. package/data/Maybe/api.d.ts +2 -1
  437. package/data/Maybe/definition.d.ts +7 -4
  438. package/data/Maybe/instances.d.ts +6 -6
  439. package/data/Newtype.d.ts +9 -8
  440. package/data/Struct/definition.d.ts +1 -1
  441. package/data/Tag/definition.d.ts +2 -2
  442. package/data/Zipped.d.ts +24 -0
  443. package/data/function/api.d.ts +6 -0
  444. package/data/object/instances.d.ts +6 -1
  445. package/optics/Traversal/api/fromTraversable.d.ts +1 -1
  446. package/optics/Traversal/definition.d.ts +2 -4
  447. package/package.json +2 -2
  448. package/typeclass/Align.d.ts +1 -1
  449. package/typeclass/Alt.d.ts +2 -4
  450. package/typeclass/Alternative.d.ts +1 -1
  451. package/typeclass/Applicative.d.ts +2 -1
  452. package/typeclass/ApplicativeExcept.d.ts +5 -13
  453. package/typeclass/Apply.d.ts +20 -32
  454. package/typeclass/Chain.d.ts +5 -13
  455. package/typeclass/Fail.d.ts +2 -7
  456. package/typeclass/Filterable.d.ts +7 -31
  457. package/typeclass/FilterableWithIndex.d.ts +7 -7
  458. package/typeclass/Foldable.d.ts +6 -19
  459. package/typeclass/FoldableWithIndex.d.ts +6 -19
  460. package/typeclass/Functor.d.ts +4 -11
  461. package/typeclass/FunctorWithIndex.d.ts +2 -2
  462. package/typeclass/Guard/definition.d.ts +1 -4
  463. package/typeclass/Monad.d.ts +1 -1
  464. package/typeclass/MonadExcept.d.ts +3 -4
  465. package/typeclass/Nil.d.ts +2 -7
  466. package/typeclass/Pointed.d.ts +2 -7
  467. package/typeclass/Semialign.d.ts +26 -32
  468. package/typeclass/Semimonoidal.d.ts +3 -8
  469. package/typeclass/Traversable.d.ts +21 -12
  470. package/typeclass/TraversableWithIndex.d.ts +19 -6
  471. package/typeclass/Witherable.d.ts +5 -19
  472. package/typeclass/WitherableWithIndex.d.ts +33 -19
  473. package/types/extractions.d.ts +1 -1
@@ -1,23 +1,23 @@
1
1
  import type * as P from "../../typeclass.js";
2
- import type { Const1F } from "@fncts/base/data/Const/definition";
2
+ import type { ConstF } from "@fncts/base/data/Const/definition";
3
3
 
4
4
  import { Const } from "@fncts/base/data/Const/definition";
5
5
 
6
6
  /**
7
7
  * @tsplus static fncts.ConstOps getApply
8
8
  */
9
- export function getApply<E>(S: P.Semigroup<E>): P.Apply<Const1F<E>> {
10
- return {
9
+ export function getApply<E>(S: P.Semigroup<E>) {
10
+ return HKT.instance<P.Apply<ConstF, HKT.Fix<"E", E>>>({
11
11
  map: (fa, f) => fa.map(f),
12
12
  zip: (self, that) => Const(S.combine(self.getConst, that.getConst)),
13
13
  zipWith: (self, that, _f) => Const(S.combine(self.getConst, that.getConst)),
14
- };
14
+ });
15
15
  }
16
16
 
17
17
  /**
18
18
  * @tsplus static fncts.ConstOps getApplicative
19
19
  */
20
- export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<Const1F<E>> {
20
+ export function getApplicative<E>(M: P.Monoid<E>): P.Applicative<ConstF, HKT.Fix<"E", E>> {
21
21
  return {
22
22
  ...getApply(M),
23
23
  pure: <A>() => Const<E, A>(M.nat),
@@ -0,0 +1,376 @@
1
+ import type { DatumF } from "@fncts/base/data/Datum/definition";
2
+ import type * as P from "@fncts/base/typeclass";
3
+ import type { Eq } from "@fncts/base/typeclass/Eq";
4
+
5
+ import { DatumTag, Initial, Pending, Refresh, Replete } from "@fncts/base/data/Datum/definition";
6
+ import { Zipped } from "@fncts/base/data/Zipped";
7
+
8
+ import { TheseTag } from "../These.js";
9
+
10
+ const _Initial = new Initial();
11
+
12
+ /**
13
+ * @tsplus static fncts.DatumOps initial
14
+ * @tsplus static fncts.Datum.InitialOps __call
15
+ */
16
+ export function initial<A = never>(): Datum<A> {
17
+ return _Initial;
18
+ }
19
+
20
+ const _Pending = new Pending();
21
+
22
+ /**
23
+ * @tsplus static fncts.DatumOps pending
24
+ * @tsplus static fncts.Datum.PendingOps __call
25
+ */
26
+ export function pending<A = never>(): Datum<A> {
27
+ return _Pending;
28
+ }
29
+
30
+ /**
31
+ * @tsplus static fncts.DatumOps refresh
32
+ * @tsplus static fncts.Datum.RefreshOps __call
33
+ */
34
+ export function refresh<A>(value: A): Datum<A> {
35
+ return new Refresh(value);
36
+ }
37
+
38
+ /**
39
+ * @tsplus static fncts.DatumOps replete
40
+ * @tsplus static fncts.Datum.RepleteOps __call
41
+ */
42
+ export function replete<A>(value: A): Datum<A> {
43
+ return new Replete(value);
44
+ }
45
+
46
+ /**
47
+ * @tsplus getter fncts.Datum value
48
+ */
49
+ export function left<E, A>(self: Datum<A>): A | undefined {
50
+ return self.isNonEmpty() ? self.value : undefined;
51
+ }
52
+
53
+ /**
54
+ * @tsplus fluent fncts.Datum isInitial
55
+ */
56
+ export function isInitial<A>(self: Datum<A>): self is Initial {
57
+ return self._tag === DatumTag.Initial;
58
+ }
59
+
60
+ /**
61
+ * @tsplus fluent fncts.Datum isPending
62
+ */
63
+ export function isPending<A>(self: Datum<A>): self is Pending {
64
+ return self._tag === DatumTag.Pending;
65
+ }
66
+
67
+ /**
68
+ * @tsplus fluent fncts.Datum isRefresh
69
+ */
70
+ export function isRefresh<A>(self: Datum<A>): self is Refresh<A> {
71
+ return self._tag === DatumTag.Refresh;
72
+ }
73
+
74
+ /**
75
+ * @tsplus fluent fncts.Datum isReplete
76
+ */
77
+ export function isReplete<A>(self: Datum<A>): self is Replete<A> {
78
+ return self._tag === DatumTag.Replete;
79
+ }
80
+
81
+ /**
82
+ * @tsplus fluent fncts.Datum isEmpty
83
+ */
84
+ export function isEmpty<A>(self: Datum<A>): self is Initial | Pending {
85
+ return self.isInitial() || self.isPending();
86
+ }
87
+
88
+ /**
89
+ * @tsplus fluent fncts.Datum isNonEmpty
90
+ */
91
+ export function isNonEmpty<A>(self: Datum<A>): self is Refresh<A> | Replete<A> {
92
+ return self.isRefresh() || self.isReplete();
93
+ }
94
+
95
+ /**
96
+ * @tsplus fluent fncts.Datum isLoading
97
+ */
98
+ export function isLoading<A>(self: Datum<A>): self is Pending | Refresh<A> {
99
+ return self.isPending() || self.isRefresh();
100
+ }
101
+
102
+ /**
103
+ * @tsplus fluent fncts.Datum elem
104
+ */
105
+ export function elem<A>(self: Datum<A>, a: A, /** @tsplus auto */ E: Eq<A>): boolean {
106
+ return self.match({
107
+ Initial: () => false,
108
+ Pending: () => false,
109
+ Refresh: (value) => E.equals(a, value),
110
+ Replete: (value) => E.equals(a, value),
111
+ });
112
+ }
113
+
114
+ /**
115
+ * @tsplus fluent fncts.Datum exists
116
+ */
117
+ export function exists<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): self is Datum<B>;
118
+ export function exists<A>(self: Datum<A>, p: Predicate<A>): boolean;
119
+ export function exists<A>(self: Datum<A>, p: Predicate<A>): boolean {
120
+ return self.match({
121
+ Initial: () => false,
122
+ Pending: () => false,
123
+ Refresh: p,
124
+ Replete: p,
125
+ });
126
+ }
127
+
128
+ /**
129
+ * @tsplus fluent fncts.Datum extend
130
+ */
131
+ export function extend<A, B>(self: Datum<A>, f: (wa: Datum<A>) => B): Datum<B> {
132
+ return Replete(f(self));
133
+ }
134
+
135
+ /**
136
+ * @tsplus fluent fncts.Datum filter
137
+ */
138
+ export function filter<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): Datum<B>;
139
+ export function filter<A>(self: Datum<A>, p: Predicate<A>): Datum<A>;
140
+ export function filter<A>(self: Datum<A>, p: Predicate<A>): Datum<A> {
141
+ return self.match({
142
+ Initial: () => self,
143
+ Pending: () => self,
144
+ Refresh: (a) => (p(a) ? self : Initial()),
145
+ Replete: (a) => (p(a) ? self : Initial()),
146
+ });
147
+ }
148
+
149
+ /**
150
+ * @tsplus fluent fncts.Datum filterMap
151
+ */
152
+ export function filterMap<A, B>(self: Datum<A>, f: (a: A) => Maybe<B>): Datum<B> {
153
+ return self.match({
154
+ Initial: () => unsafeCoerce(self),
155
+ Pending: () => unsafeCoerce(self),
156
+ Refresh: (value) =>
157
+ f(value).match(
158
+ () => Initial(),
159
+ (b) => Refresh(b),
160
+ ),
161
+ Replete: (value) =>
162
+ f(value).match(
163
+ () => Initial(),
164
+ (b) => Replete(b),
165
+ ),
166
+ });
167
+ }
168
+
169
+ /**
170
+ * @tsplus fluent fncts.Datum flatMap
171
+ */
172
+ export function flatMap<A, B>(self: Datum<A>, f: (a: A) => Datum<B>): Datum<B> {
173
+ if (self.isEmpty()) {
174
+ return self;
175
+ }
176
+ const that = f(self.value);
177
+
178
+ if (that.isEmpty()) {
179
+ return that;
180
+ }
181
+ return self.isRefresh() || that.isRefresh() ? Refresh(that.value!) : Replete(that.value!);
182
+ }
183
+
184
+ /**
185
+ * @tsplus fluent fncts.Datum foldLeft
186
+ */
187
+ export function foldLeft<A, B>(self: Datum<A>, b: B, f: (b: B, a: A) => B): B {
188
+ return self.match({
189
+ Initial: () => b,
190
+ Pending: () => b,
191
+ Refresh: (a) => f(b, a),
192
+ Replete: (a) => f(b, a),
193
+ });
194
+ }
195
+
196
+ /**
197
+ * @tsplus fluent fncts.Datum foldMap
198
+ */
199
+ export function foldMap<A, M>(self: Datum<A>, f: (a: A) => M, /** @tsplus auto */ M: P.Monoid<M>): M {
200
+ return self.match({
201
+ Initial: () => M.nat,
202
+ Pending: () => M.nat,
203
+ Refresh: f,
204
+ Replete: f,
205
+ });
206
+ }
207
+
208
+ /**
209
+ * @tsplus fluent fncts.Datum foldRight
210
+ */
211
+ export function foldRight<A, B>(self: Datum<A>, b: B, f: (a: A, b: B) => B): B {
212
+ return self.match({
213
+ Initial: () => b,
214
+ Pending: () => b,
215
+ Refresh: (a) => f(a, b),
216
+ Replete: (a) => f(a, b),
217
+ });
218
+ }
219
+
220
+ /**
221
+ * @tsplus fluent fncts.Datum getOrElse
222
+ */
223
+ export function getOrElse<A, B>(self: Datum<A>, b: Lazy<B>): A | B {
224
+ return self.match({
225
+ Initial: b,
226
+ Pending: b,
227
+ Refresh: Function.identity,
228
+ Replete: Function.identity,
229
+ });
230
+ }
231
+
232
+ /**
233
+ * @tsplus fluent fncts.Datum match
234
+ */
235
+ export function match<A, B, C, D, E>(
236
+ self: Datum<A>,
237
+ cases: {
238
+ Initial: () => B;
239
+ Pending: () => C;
240
+ Refresh: (a: A) => D;
241
+ Replete: (a: A) => E;
242
+ },
243
+ ): B | C | D | E {
244
+ switch (self._tag) {
245
+ case DatumTag.Initial:
246
+ return cases.Initial();
247
+ case DatumTag.Pending:
248
+ return cases.Pending();
249
+ case DatumTag.Refresh:
250
+ return cases.Refresh(self.value);
251
+ case DatumTag.Replete:
252
+ return cases.Replete(self.value);
253
+ }
254
+ }
255
+
256
+ /**
257
+ * @tsplus fluent fncts.Datum match2
258
+ */
259
+ export function match2<A, B, C>(
260
+ self: Datum<A>,
261
+ onEmpty: (isLoading: boolean) => B,
262
+ onValue: (a: A, isLoading: boolean) => C,
263
+ ): B | C {
264
+ switch (self._tag) {
265
+ case DatumTag.Initial:
266
+ return onEmpty(false);
267
+ case DatumTag.Pending:
268
+ return onEmpty(true);
269
+ case DatumTag.Refresh:
270
+ return onValue(self.value, true);
271
+ case DatumTag.Replete:
272
+ return onValue(self.value, false);
273
+ }
274
+ }
275
+
276
+ /**
277
+ * @tsplus fluent fncts.Datum map
278
+ */
279
+ export function map<A, B>(self: Datum<A>, f: (a: A) => B): Datum<B> {
280
+ switch (self._tag) {
281
+ case DatumTag.Initial:
282
+ case DatumTag.Pending:
283
+ return self;
284
+ case DatumTag.Refresh:
285
+ return Refresh(f(self.value));
286
+ case DatumTag.Replete:
287
+ return Replete(f(self.value));
288
+ }
289
+ }
290
+
291
+ /**
292
+ * @tsplus fluent fncts.Datum orElse
293
+ */
294
+ export function orElse<A, B>(self: Datum<A>, that: Lazy<Datum<B>>): Datum<A | B> {
295
+ return self.match({
296
+ Initial: that,
297
+ Pending: that,
298
+ Refresh: () => self,
299
+ Replete: () => self,
300
+ });
301
+ }
302
+
303
+ /**
304
+ * @tsplus fluent fncts.Datum partition
305
+ */
306
+ export function partition<A, B extends A>(self: Datum<A>, p: Refinement<A, B>): [Datum<A>, Datum<B>];
307
+ export function partition<A>(self: Datum<A>, p: Predicate<A>): [Datum<A>, Datum<A>];
308
+ export function partition<A>(self: Datum<A>, p: Predicate<A>): [Datum<A>, Datum<A>] {
309
+ return [self.filter(p.invert), self.filter(p)];
310
+ }
311
+
312
+ /**
313
+ * @tsplus fluent fncts.Datum partitionMap
314
+ */
315
+ export function partitionMap<A, B, C>(self: Datum<A>, f: (a: A) => Either<B, C>): [Datum<B>, Datum<C>] {
316
+ return self.match({
317
+ Initial: () => [Initial(), Initial()],
318
+ Pending: () => [Pending(), Pending()],
319
+ Refresh: (a) =>
320
+ f(a).match(
321
+ (b) => [Refresh(b), Initial()],
322
+ (c) => [Initial(), Refresh(c)],
323
+ ),
324
+ Replete: (a) =>
325
+ f(a).match(
326
+ (b) => [Replete(b), Initial()],
327
+ (c) => [Initial(), Replete(c)],
328
+ ),
329
+ });
330
+ }
331
+
332
+ /**
333
+ * @tsplus getter fncts.Datum toPending
334
+ */
335
+ export function toPending<A>(self: Datum<A>): Datum<A> {
336
+ return self.isEmpty() ? self : Refresh(self.value);
337
+ }
338
+
339
+ /**
340
+ * @tsplus getter fncts.Datum toReplete
341
+ */
342
+ export function toReplete<A>(self: Datum<A>): Datum<A> {
343
+ return self.isEmpty() ? self : Replete(self.value);
344
+ }
345
+
346
+ /**
347
+ * @tsplus fluent fncts.Datum traverse
348
+ */
349
+ export const traverse: P.Traversable<DatumF>["traverse"] = (self) => (A) => (f) =>
350
+ self.match({
351
+ Initial: () => A.pure(Initial()),
352
+ Pending: () => A.pure(Pending()),
353
+ Refresh: (a) => A.map(f(a), (b) => Refresh(b)),
354
+ Replete: (a) => A.map(f(a), (b) => Replete(b)),
355
+ });
356
+
357
+ /**
358
+ * @tsplus fluent fncts.Datum zip
359
+ */
360
+ export function zip<A, B>(self: Datum<A>, that: Datum<B>): Datum<Zipped.Make<A, B>> {
361
+ return self.zipWith(that, (a, b) => Zipped(a, b));
362
+ }
363
+
364
+ /**
365
+ * @tsplus fluent fncts.Datum zipWith
366
+ */
367
+ export function zipWith<A, B, C>(self: Datum<A>, that: Datum<B>, f: (a: A, b: B) => C): Datum<C> {
368
+ if (self.isEmpty()) {
369
+ return self;
370
+ }
371
+ if (that.isEmpty()) {
372
+ return that;
373
+ }
374
+ const c = f(self.value, that.value);
375
+ return self.isRefresh() || that.isRefresh() ? Refresh(c) : Replete(c);
376
+ }
@@ -0,0 +1,102 @@
1
+ export const enum DatumTag {
2
+ Initial = "Initial",
3
+ Pending = "Pending",
4
+ Refresh = "Refresh",
5
+ Replete = "Replete",
6
+ }
7
+
8
+ export const DatumTypeId = Symbol.for("fncts.Datum");
9
+ export type DatumTypeId = typeof DatumTypeId;
10
+
11
+ export interface DatumF extends HKT {
12
+ type: Datum<this["A"]>;
13
+ variance: {
14
+ A: "+";
15
+ };
16
+ }
17
+
18
+ /**
19
+ * @tsplus type fncts.Datum
20
+ */
21
+ export type Datum<A> = Initial | Pending | Refresh<A> | Replete<A>;
22
+
23
+ /**
24
+ * @tsplus type fncts.DatumOps
25
+ */
26
+ export interface DatumOps {}
27
+
28
+ export const Datum: DatumOps = {};
29
+
30
+ const datumHash = Hashable.string("fncts.Datum");
31
+
32
+ const initialHash = Hashable.combine(datumHash, Hashable.string(DatumTag.Initial));
33
+
34
+ /**
35
+ * @tsplus type fncts.Datum.Initial
36
+ * @tsplus companion fncts.Datum.InitialOps
37
+ */
38
+ export class Initial implements Hashable, Equatable {
39
+ readonly _tag = DatumTag.Initial;
40
+ get [Symbol.hash](): number {
41
+ return initialHash;
42
+ }
43
+ [Symbol.equals](that: unknown): boolean {
44
+ return isDatum(that) && that._tag === this._tag;
45
+ }
46
+ }
47
+
48
+ const pendingHash = Hashable.combine(datumHash, Hashable.string(DatumTag.Pending));
49
+
50
+ /**
51
+ * @tsplus type fncts.Datum.Pending
52
+ * @tsplus companion fncts.Datum.PendingOps
53
+ */
54
+ export class Pending implements Hashable, Equatable {
55
+ readonly _typeId: DatumTypeId = DatumTypeId;
56
+ readonly _tag = DatumTag.Pending;
57
+ get [Symbol.hash](): number {
58
+ return pendingHash;
59
+ }
60
+ [Symbol.equals](that: unknown): boolean {
61
+ return isDatum(that) && that._tag === this._tag;
62
+ }
63
+ }
64
+
65
+ /**
66
+ * @tsplus type fncts.Datum.Refresh
67
+ * @tsplus companion fncts.Datum.RefreshOps
68
+ */
69
+ export class Refresh<A> implements Hashable, Equatable {
70
+ readonly _typeId: DatumTypeId = DatumTypeId;
71
+ readonly _tag = DatumTag.Refresh;
72
+ constructor(readonly value: A) {}
73
+ get [Symbol.hash](): number {
74
+ return Hashable.combine(Hashable.combine(datumHash, Hashable.string(this._tag)), Hashable.unknown(this.value));
75
+ }
76
+ [Symbol.equals](that: unknown): boolean {
77
+ return isDatum(that) && this._tag === that._tag && Equatable.strictEquals(this.value, that.value);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * @tsplus type fncts.Datum.Replete
83
+ * @tsplus companion fncts.Datum.RepleteOps
84
+ */
85
+ export class Replete<A> implements Hashable, Equatable {
86
+ readonly _typeId: DatumTypeId = DatumTypeId;
87
+ readonly _tag = DatumTag.Replete;
88
+ constructor(readonly value: A) {}
89
+ get [Symbol.hash](): number {
90
+ return Hashable.combine(Hashable.combine(datumHash, Hashable.string(this._tag)), Hashable.unknown(this.value));
91
+ }
92
+ [Symbol.equals](that: unknown): boolean {
93
+ return isDatum(that) && this._tag === that._tag && Equatable.strictEquals(this.value, that.value);
94
+ }
95
+ }
96
+
97
+ /**
98
+ * @tsplus static fncts.DatumOps is
99
+ */
100
+ export function isDatum(u: unknown): u is Datum<unknown> {
101
+ return hasTypeId(u, DatumTypeId);
102
+ }
@@ -0,0 +1,34 @@
1
+ import type { DatumF } from "./definition.js";
2
+ import type * as P from "@fncts/base/typeclass";
3
+
4
+ import { flatMap, map, replete, zip, zipWith } from "@fncts/base/data/Datum/api";
5
+
6
+ /**
7
+ * @tsplus static fncts.DatumOps Functor
8
+ * @tsplus implicit
9
+ */
10
+ export const Functor = HKT.instance<P.Functor<DatumF>>({ map });
11
+
12
+ /**
13
+ * @tsplus static fncts.DatumOps Semimonoidal
14
+ * @tsplus implicit
15
+ */
16
+ export const Semimonoidal = HKT.instance<P.Semimonoidal<DatumF>>({ zip });
17
+
18
+ /**
19
+ * @tsplus static fncts.DatumOps Apply
20
+ * @tsplus implicit
21
+ */
22
+ export const Apply = HKT.instance<P.Apply<DatumF>>({ map, zip, zipWith });
23
+
24
+ /**
25
+ * @tsplus static fncts.DatumOps Applicative
26
+ * @tsplus implicit
27
+ */
28
+ export const Applicative = HKT.instance<P.Applicative<DatumF>>({ map, zip, zipWith, pure: replete });
29
+
30
+ /**
31
+ * @tsplus static fncts.DatumOps Monad
32
+ * @tsplus implicit
33
+ */
34
+ export const Monad = HKT.instance<P.Monad<DatumF>>({ map, zip, zipWith, pure: replete, flatMap });