@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
@@ -0,0 +1,239 @@
1
+ import type { EitherT } from "./definition.js";
2
+ import type * as P from "@fncts/base/typeclass";
3
+
4
+ /**
5
+ * @tsplus static fncts.EitherTOps __call
6
+ */
7
+ export function make<F extends HKT, FC, K, Q, W, X, I, S, R, FE, E, A>(
8
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
9
+ ): EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
10
+ return self;
11
+ }
12
+
13
+ /**
14
+ * @tsplus static fncts.EitherTOps right
15
+ */
16
+ export function right<F extends HKT, FC>(
17
+ F: P.Pointed<F, FC>,
18
+ ): <K, Q, W, X, I, S, R, FE, E = never, A = never>(a: A) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
19
+ return (a) => F.pure(Either.right(a));
20
+ }
21
+
22
+ /**
23
+ * @tsplus static fncts.EitherTOps left
24
+ */
25
+ export function left<F extends HKT, FC>(
26
+ F: P.Pointed<F, FC>,
27
+ ): <K, Q, W, X, I, S, R, FE, E, A = never>(e: E) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
28
+ return (e) => F.pure(Either.left(e));
29
+ }
30
+
31
+ /**
32
+ * @tsplus static fncts.EitherTOps rightF
33
+ */
34
+ export function rightF<F extends HKT, FC>(
35
+ F: P.Functor<F, FC>,
36
+ ): <K, Q, W, X, I, S, R, FE, E = never, A = never>(
37
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, A>,
38
+ ) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
39
+ return (self) => F.map(self, Either.right);
40
+ }
41
+
42
+ /**
43
+ * @tsplus static fncts.EitherTOps leftF
44
+ */
45
+ export function leftF<F extends HKT, FC>(
46
+ F: P.Functor<F, FC>,
47
+ ): <K, Q, W, X, I, S, R, FE, E = never, A = never>(
48
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, E>,
49
+ ) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A> {
50
+ return (self) => F.map(self, Either.left);
51
+ }
52
+
53
+ /**
54
+ * @tsplus static fncts.EitherTOps map
55
+ */
56
+ export function map<F extends HKT, FC>(
57
+ F: P.Functor<F, FC>,
58
+ ): <K, Q, W, X, I, S, R, FE, E, A, B>(
59
+ self: EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A>,
60
+ f: (a: A) => B,
61
+ ) => EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, B> {
62
+ return (self, f) => F.map(self, (either) => either.map(f));
63
+ }
64
+
65
+ /**
66
+ * @tsplus static fncts.EitherTOps mapLeft
67
+ */
68
+ export function mapLeft<F extends HKT, FC = HKT.None>(
69
+ F: P.Functor<F, FC>,
70
+ ): <K, Q, W, X, I, S, R, FE, E, A, E1>(
71
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
72
+ f: (e: E) => E1,
73
+ ) => HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E1, A>> {
74
+ return (self, f) => F.map(self, (either) => either.mapLeft(f));
75
+ }
76
+
77
+ /**
78
+ * @tsplus static fncts.EitherTOps bimap
79
+ */
80
+ export function bimap<F extends HKT, FC = HKT.None>(
81
+ F: P.Functor<F, FC>,
82
+ ): <K, Q, W, X, I, S, R, FE, E, A, E1, B>(
83
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E, A>>,
84
+ f: (e: E) => E1,
85
+ g: (a: A) => B,
86
+ ) => HKT.Kind<F, FC, K, Q, W, X, I, S, R, FE, Either<E1, B>> {
87
+ return (self, f, g) => F.map(self, (either) => either.bimap(f, g));
88
+ }
89
+
90
+ /**
91
+ * @tsplus static fncts.EitherTOps flatMap
92
+ */
93
+ export function flatMap<F extends HKT, FC>(F: P.Monad<F, FC>) {
94
+ return <K, Q, W, X, I, S, R, FE, E, A, K1, Q1, W1, X1, I1, S1, R1, FE1, E1, B>(
95
+ self: EitherT<F, FC, K, Q, W, X, I, S, R, FE, E, A>,
96
+ f: (
97
+ a: A,
98
+ ) => HKT.Kind<
99
+ F,
100
+ FC,
101
+ HKT.Intro<F, "K", K, K1>,
102
+ HKT.Intro<F, "Q", Q, Q1>,
103
+ HKT.Intro<F, "W", W, W1>,
104
+ HKT.Intro<F, "X", X, X1>,
105
+ HKT.Intro<F, "I", I, I1>,
106
+ HKT.Intro<F, "S", S, S1>,
107
+ HKT.Intro<F, "R", R, R1>,
108
+ HKT.Intro<F, "E", FE, FE1>,
109
+ Either<E1, B>
110
+ >,
111
+ ): EitherT<
112
+ F,
113
+ FC,
114
+ HKT.Mix<F, "K", [K, K1]>,
115
+ HKT.Mix<F, "Q", [Q, Q1]>,
116
+ HKT.Mix<F, "W", [W, W1]>,
117
+ HKT.Mix<F, "X", [X, X1]>,
118
+ HKT.Mix<F, "I", [I, I1]>,
119
+ HKT.Mix<F, "S", [S, S1]>,
120
+ HKT.Mix<F, "R", [R, R1]>,
121
+ HKT.Mix<F, "E", [FE, FE1]>,
122
+ E | E1,
123
+ B
124
+ > =>
125
+ F.flatMap(
126
+ self,
127
+ (either) =>
128
+ either.match(
129
+ (e) => F.pure(Either.left(e)),
130
+ (a) => f(a),
131
+ ) as HKT.Kind<
132
+ F,
133
+ FC,
134
+ HKT.Intro<F, "K", K, K1>,
135
+ HKT.Intro<F, "Q", Q, Q1>,
136
+ HKT.Intro<F, "W", W, W1>,
137
+ HKT.Intro<F, "X", X, X1>,
138
+ HKT.Intro<F, "I", I, I1>,
139
+ HKT.Intro<F, "S", S, S1>,
140
+ HKT.Intro<F, "R", R, R1>,
141
+ HKT.Intro<F, "E", FE, FE1>,
142
+ Either<E1, B>
143
+ >,
144
+ );
145
+ }
146
+
147
+ /**
148
+ * @tsplus static fncts.EitherTOps zipWith
149
+ */
150
+ export function zipWith<F extends HKT, FC = HKT.None>(
151
+ F: P.Apply<F, FC>,
152
+ ): <K, Q, W, X, I, S, R, EF, E, A, K1, Q1, W1, X1, I1, S1, R1, EF1, E1, B, C>(
153
+ self: HKT.Kind<F, FC, K, Q, W, X, I, S, R, EF, Either<E, A>>,
154
+ that: HKT.Kind<
155
+ F,
156
+ FC,
157
+ HKT.Intro<F, "K", K, K1>,
158
+ HKT.Intro<F, "Q", Q, Q1>,
159
+ HKT.Intro<F, "W", W, W1>,
160
+ HKT.Intro<F, "X", X, X1>,
161
+ HKT.Intro<F, "I", I, I1>,
162
+ HKT.Intro<F, "S", S, S1>,
163
+ HKT.Intro<F, "R", R, R1>,
164
+ HKT.Intro<F, "E", EF, EF1>,
165
+ Either<E1, B>
166
+ >,
167
+ f: (a: A, b: B) => C,
168
+ ) => HKT.Kind<
169
+ F,
170
+ FC,
171
+ HKT.Intro<F, "K", K, K1>,
172
+ HKT.Intro<F, "Q", Q, Q1>,
173
+ HKT.Intro<F, "W", W, W1>,
174
+ HKT.Intro<F, "X", X, X1>,
175
+ HKT.Intro<F, "I", I, I1>,
176
+ HKT.Intro<F, "S", S, S1>,
177
+ HKT.Intro<F, "R", R, R1>,
178
+ HKT.Intro<F, "E", EF, EF1>,
179
+ Either<E | E1, C>
180
+ >;
181
+ export function zipWith<F extends HKT>(
182
+ F: P.Apply<HKT.F<F>>,
183
+ ): <E, A, E1, B, C>(
184
+ self: HKT.FK1<F, Either<E, A>>,
185
+ that: HKT.FK1<F, Either<E1, B>>,
186
+ f: (a: A, b: B) => C,
187
+ ) => HKT.FK1<F, Either<E | E1, C>> {
188
+ return (self, that, f) => F.zipWith(self, that, (a, b) => a.zipWith(b, f));
189
+ }
190
+
191
+ /**
192
+ * @tsplus static fncts.EitherTOps orElse
193
+ */
194
+ export function orElse<F extends HKT, FC = HKT.None>(
195
+ F: P.Monad<F, FC>,
196
+ ): <K, Q, W, X, I, S, R, EF, E, A, K1, Q1, W1, X1, I1, S1, R1, EF1, E1, B>(
197
+ fa: HKT.Kind<F, FC, K, Q, W, X, I, S, R, EF, Either<E, A>>,
198
+ that: Lazy<
199
+ HKT.Kind<
200
+ F,
201
+ FC,
202
+ HKT.Intro<F, "K", K, K1>,
203
+ HKT.Intro<F, "Q", Q, Q1>,
204
+ HKT.Intro<F, "W", W, W1>,
205
+ HKT.Intro<F, "X", X, X1>,
206
+ HKT.Intro<F, "I", I, I1>,
207
+ HKT.Intro<F, "S", S, S1>,
208
+ HKT.Intro<F, "R", R, R1>,
209
+ HKT.Intro<F, "E", EF, EF1>,
210
+ Either<E1, B>
211
+ >
212
+ >,
213
+ ) => HKT.Kind<
214
+ F,
215
+ FC,
216
+ HKT.Mix<F, "K", [K, K1]>,
217
+ HKT.Mix<F, "Q", [Q, Q1]>,
218
+ HKT.Mix<F, "W", [W, W1]>,
219
+ HKT.Mix<F, "X", [X, X1]>,
220
+ HKT.Mix<F, "I", [I, I1]>,
221
+ HKT.Mix<F, "S", [S, S1]>,
222
+ HKT.Mix<F, "R", [R, R1]>,
223
+ HKT.Mix<F, "E", [EF, EF1]>,
224
+ Either<E | E1, A | B>
225
+ >;
226
+ export function orElse<F>(
227
+ F: P.Monad<HKT.F1<F>>,
228
+ ): <E, A, E1, B>(
229
+ self: HKT.FK1<F, Either<E, A>>,
230
+ that: Lazy<HKT.FK1<F, Either<E1, B>>>,
231
+ ) => HKT.FK1<F, Either<E | E1, A | B>> {
232
+ return (self, that) =>
233
+ F.flatMap(self, (either) =>
234
+ either.match(
235
+ () => that(),
236
+ () => F.pure(either),
237
+ ),
238
+ );
239
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @tsplus type fncts.EitherT
3
+ */
4
+ export type EitherT<F extends HKT, FC, K, Q, W, X, I, S, R, EF, E, A> = HKT.Kind<
5
+ F,
6
+ FC,
7
+ K,
8
+ Q,
9
+ W,
10
+ X,
11
+ I,
12
+ S,
13
+ R,
14
+ EF,
15
+ Either<E, A>
16
+ >;
17
+
18
+ /**
19
+ * @tsplus type fncts.EitherTOps
20
+ */
21
+ export interface EitherTOps {}
22
+
23
+ export const EitherT: EitherTOps = {};
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @tsplus fluent fncts.Environment add
3
3
  */
4
- export function add<R, S, H extends S = S>(self: Environment<R>, service: H, tag: Tag<S>): Environment<R & Has<S>> {
4
+ export function add<R, H extends S, S = H>(self: Environment<R>, service: H, tag: Tag<S>): Environment<R | S> {
5
5
  const self0 = self.index === Number.MAX_SAFE_INTEGER ? self.clean : self;
6
6
  return new Environment(self0.map.set(tag, [service, self0.index]), self0.index + 1);
7
7
  }
@@ -11,11 +11,13 @@ export function add<R, S, H extends S = S>(self: Environment<R>, service: H, tag
11
11
  */
12
12
  export const empty = Environment();
13
13
 
14
+ type Tags<R> = R extends infer S ? Tag<S> : never;
15
+
14
16
  /**
15
17
  * @tsplus fluent fncts.Environment get
16
18
  */
17
- export function get<R extends Has<S>, S>(self: Environment<R>, tag: Tag<S>): S {
18
- return self.unsafeGet(tag);
19
+ export function get<R, T extends Tags<R>>(self: Environment<R>, tag: T): T extends Tag<infer S> ? S : never {
20
+ return unsafeCoerce(self.unsafeGet(tag));
19
21
  }
20
22
 
21
23
  /**
@@ -28,7 +30,7 @@ export function getMaybe<R extends Has<S>, S>(self: Environment<R>, tag: Tag<S>)
28
30
  /**
29
31
  * @tsplus static fncts.EnvironmentOps __call
30
32
  */
31
- export function make(): Environment<unknown> {
33
+ export function make(): Environment<never> {
32
34
  return new Environment(HashMap.makeDefault(), 0, HashMap.makeDefault());
33
35
  }
34
36
 
@@ -88,6 +90,6 @@ export function unsafeGet<R, S>(self: Environment<R>, tag: Tag<S>): S {
88
90
  /**
89
91
  * @tsplus fluent fncts.Environment update
90
92
  */
91
- export function update<R extends Has<S>, S>(self: Environment<R>, f: (s: S) => S, tag: Tag<S>): Environment<R> {
92
- return self.add(f(self.get(tag)), tag);
93
+ export function update<R, S extends R>(self: Environment<R>, f: (s: S) => S, tag: Tag<S>): Environment<R> {
94
+ return self.add(f(self.unsafeGet(tag)), tag);
93
95
  }
@@ -13,9 +13,9 @@ export class Environment<R> implements Hashable, Equatable {
13
13
  readonly _typeId: EnvSymbol = EnvSymbol;
14
14
  readonly [EnvSymbol]!: (_: never) => R;
15
15
  constructor(
16
- readonly map: HashMap<Tag<unknown>, readonly [unknown, number]>,
16
+ readonly map: HashMap<Tag<any>, readonly [unknown, number]>,
17
17
  readonly index: number,
18
- public cache: HashMap<Tag<unknown>, unknown> = HashMap.makeDefault(),
18
+ public cache: HashMap<Tag<any>, unknown> = HashMap.makeDefault(),
19
19
  ) {}
20
20
 
21
21
  get [Symbol.hash](): number {
@@ -30,8 +30,8 @@ export function zipWith_<A, B, C>(fa: Identity<A>, fb: Identity<B>, f: (a: A, b:
30
30
  /**
31
31
  * @tsplus fluent fncts.Identity zip
32
32
  */
33
- export function zip_<A, B>(fa: Identity<A>, fb: Identity<B>): Identity<readonly [A, B]> {
34
- return fa.zipWith(fb, (a, b) => [a, b]);
33
+ export function zip_<A, B>(fa: Identity<A>, fb: Identity<B>): Identity<Zipped.Make<A, B>> {
34
+ return fa.zipWith(fb, (a, b) => Zipped(a, b));
35
35
  }
36
36
 
37
37
  /**
@@ -1,5 +1,5 @@
1
- export interface IdentityN {
2
- readonly [HKT.T]: Identity<HKT._A<this>>;
1
+ export interface IdentityN extends HKT {
2
+ type: Identity<this["A"]>;
3
3
  }
4
4
 
5
5
  /**
@@ -1,28 +1,28 @@
1
1
  import type * as P from "../../typeclass.js";
2
2
  import type { IdentityN } from "@fncts/base/data/Identity/definition";
3
3
 
4
- import { ap_, map_, pure, zip_, zipWith_ } from "./api.js";
4
+ import { map_, pure, zip_, zipWith_ } from "./api.js";
5
5
 
6
6
  /**
7
7
  * @tsplus static fncts.IdentityOps Functor
8
8
  */
9
- export const Functor: P.Functor<IdentityN> = {
9
+ export const Functor = HKT.instance<P.Functor<IdentityN>>({
10
10
  map: map_,
11
- };
11
+ });
12
12
 
13
13
  /**
14
14
  * @tsplus static fncts.IdentityOps Apply
15
15
  */
16
- export const Apply: P.Apply<IdentityN> = {
16
+ export const Apply = HKT.instance<P.Apply<IdentityN>>({
17
17
  ...Functor,
18
18
  zip: zip_,
19
19
  zipWith: zipWith_,
20
- };
20
+ });
21
21
 
22
22
  /**
23
23
  * @tsplus static fncts.IdentityOps Applicative
24
24
  */
25
- export const Applicative: P.Applicative<IdentityN> = {
25
+ export const Applicative = HKT.instance<P.Applicative<IdentityN>>({
26
26
  ...Apply,
27
27
  pure,
28
- };
28
+ });
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @tsplus type fncts.Intervals
3
+ * @tsplus companion fncts.IntervalsOps
4
+ */
5
+ export class Intervals {
6
+ constructor(readonly intervals: List<Interval>) {}
7
+ }
8
+
9
+ /**
10
+ * @tsplus static fncts.IntervalsOps __call
11
+ */
12
+ export function make(intervals: List<Interval>): Intervals {
13
+ return new Intervals(intervals);
14
+ }
15
+
16
+ /**
17
+ * @tsplus fluent fncts.Intervals union
18
+ * @tsplus operator fncts.Intervals ||
19
+ */
20
+ export function union(self: Intervals, that: Intervals): Intervals {
21
+ if (that.intervals.isEmpty()) {
22
+ return self;
23
+ } else if (self.intervals.isEmpty()) {
24
+ return that;
25
+ } else if (self.intervals.head.startMilliseconds < that.intervals.head.startMilliseconds) {
26
+ return unionLoop(self.intervals.tail, that.intervals, self.intervals.head, Nil());
27
+ } else {
28
+ return unionLoop(self.intervals, that.intervals.tail, that.intervals.head, Nil());
29
+ }
30
+ }
31
+
32
+ /**
33
+ * @tsplus tailRec
34
+ */
35
+ function unionLoop(left: List<Interval>, right: List<Interval>, interval: Interval, acc: List<Interval>): Intervals {
36
+ if (left.isEmpty() && right.isEmpty()) {
37
+ return Intervals((interval + acc).reverse);
38
+ } else if (left.isEmpty() && right.isNonEmpty()) {
39
+ const rightHead = right.head;
40
+ const rights = right.tail;
41
+ if (interval.endMilliseconds < rightHead.startMilliseconds)
42
+ return unionLoop(Nil(), rights, rightHead, interval + acc);
43
+ else return unionLoop(Nil(), rights, Interval(interval.startMilliseconds, rightHead.endMilliseconds), acc);
44
+ } else if (left.isNonEmpty() && right.isEmpty()) {
45
+ const leftHead = left.head;
46
+ const lefts = left.tail;
47
+ if (interval.endMilliseconds < leftHead.startMilliseconds) return unionLoop(lefts, Nil(), leftHead, interval + acc);
48
+ else return unionLoop(lefts, Nil(), Interval(interval.startMilliseconds, leftHead.endMilliseconds), acc);
49
+ } else {
50
+ const leftHead = left.unsafeHead;
51
+ const lefts = left.unsafeTail;
52
+ const rightHead = right.unsafeHead;
53
+ const rights = right.unsafeTail;
54
+ if (leftHead.startMilliseconds < rightHead.startMilliseconds) {
55
+ if (interval.endMilliseconds < leftHead.startMilliseconds)
56
+ return unionLoop(lefts, right, leftHead, interval + acc);
57
+ else return unionLoop(lefts, right, Interval(interval.startMilliseconds, leftHead.endMilliseconds), acc);
58
+ } else {
59
+ if (interval.endMilliseconds < rightHead.startMilliseconds)
60
+ return unionLoop(left, rights, rightHead, interval + acc);
61
+ else return unionLoop(left, rights, Interval(interval.startMilliseconds, rightHead.endMilliseconds), acc);
62
+ }
63
+ }
64
+ }
65
+
66
+ /**
67
+ * @tsplus fluent fncts.Intervals intersect
68
+ * @tsplus operator fncts.Intervals &&
69
+ */
70
+ export function intersect(self: Intervals, that: Intervals): Intervals {
71
+ return intersectLoop(self.intervals, that.intervals, Nil());
72
+ }
73
+
74
+ /**
75
+ * @tsplus tailRec
76
+ */
77
+ function intersectLoop(left: List<Interval>, right: List<Interval>, acc: List<Interval>): Intervals {
78
+ if (left.isEmpty() || right.isEmpty()) {
79
+ return Intervals(acc.reverse);
80
+ } else {
81
+ const leftHead = left.head;
82
+ const lefts = left.tail;
83
+ const rightHead = right.head;
84
+ const rights = right.tail;
85
+ const interval = leftHead.intersect(rightHead);
86
+ const intervals = interval.isEmpty ? acc : interval + acc;
87
+ if (leftHead < rightHead) return intersectLoop(lefts, right, intervals);
88
+ else return intersectLoop(left, rights, intervals);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * @tsplus getter fncts.Intervals start
94
+ */
95
+ export function start(self: Intervals): number {
96
+ return self.intervals.head.getOrElse(Interval.empty).startMilliseconds;
97
+ }
98
+
99
+ /**
100
+ * @tsplus getter fncts.Intervals end
101
+ */
102
+ export function end(self: Intervals): number {
103
+ return self.intervals.head.getOrElse(Interval.empty).endMilliseconds;
104
+ }
105
+
106
+ /**
107
+ * @tsplus fluent fncts.Intervals lt
108
+ * @tsplus operator fncts.Intervals <
109
+ */
110
+ export function lt(self: Intervals, that: Intervals): boolean {
111
+ return self.start < that.start;
112
+ }
113
+
114
+ /**
115
+ * @tsplus fluent fncts.Intervals max
116
+ */
117
+ export function max(self: Intervals, that: Intervals): Intervals {
118
+ return self < that ? that : self;
119
+ }
120
+
121
+ /**
122
+ * @tsplus getter fncts.Intervals isNonEmpty
123
+ */
124
+ export function isNonEmpty(self: Intervals): boolean {
125
+ return self.intervals.isNonEmpty();
126
+ }
@@ -172,6 +172,6 @@ export function zipWith_<A, B, C>(self: Maybe<A>, fb: Maybe<B>, f: (a: A, b: B)
172
172
  /**
173
173
  * @tsplus fluent fncts.Maybe zip
174
174
  */
175
- export function zip_<A, B>(self: Maybe<A>, that: Maybe<B>): Maybe<readonly [A, B]> {
176
- return self.zipWith(that, (a, b) => [a, b]);
175
+ export function zip_<A, B>(self: Maybe<A>, that: Maybe<B>): Maybe<Zipped.Make<A, B>> {
176
+ return self.zipWith(that, (a, b) => Zipped(a, b));
177
177
  }
@@ -8,7 +8,12 @@ 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>;
11
+ export interface MaybeF extends HKT {
12
+ type: Maybe<this["A"]>;
13
+ variance: {
14
+ A: "+";
15
+ };
16
+ }
12
17
 
13
18
  const _justHash = Hashable.string("fncts.Just");
14
19
  const _nothingHash = Hashable.string("fncts.Nothing");
@@ -18,10 +23,8 @@ const _nothingHash = Hashable.string("fncts.Nothing");
18
23
  * @tsplus companion fncts.MaybeOps
19
24
  */
20
25
  export class Maybe<A> {
26
+ readonly _A!: () => A;
21
27
  readonly _typeId: MaybeTypdId = MaybeTypeId;
22
- readonly [HKT.F]!: MaybeF;
23
- readonly [HKT.A]!: () => A;
24
- readonly [HKT.T]!: Maybe<HKT._A<this>>;
25
28
  }
26
29
 
27
30
  /**
@@ -17,32 +17,32 @@ import {
17
17
  } from "./api.js";
18
18
  import { just } from "./constructors.js";
19
19
 
20
- export const Functor: P.Functor<MaybeF> = { map: map_ };
20
+ export const Functor = HKT.instance<P.Functor<MaybeF>>({ map: map_ });
21
21
 
22
- export const Apply: P.Apply<MaybeF> = { ...Functor, zip: zip_, zipWith: zipWith_ };
22
+ export const Apply = HKT.instance<P.Apply<MaybeF>>({ ...Functor, zip: zip_, zipWith: zipWith_ });
23
23
 
24
- export const Applicative: P.Applicative<MaybeF> = {
24
+ export const Applicative = HKT.instance<P.Applicative<MaybeF>>({
25
25
  ...Apply,
26
26
  pure: just,
27
- };
27
+ });
28
28
 
29
- export const Monad: P.Monad<MaybeF> = {
29
+ export const Monad = HKT.instance<P.Monad<MaybeF>>({
30
30
  ...Applicative,
31
31
  flatMap: flatMap_,
32
- };
32
+ });
33
33
 
34
- export const Foldable: P.Foldable<MaybeF> = {
34
+ export const Foldable = HKT.instance<P.Foldable<MaybeF>>({
35
35
  foldLeft: foldLeft_,
36
36
  foldRight: foldRight_,
37
- };
37
+ });
38
38
 
39
- export const Filterable: P.Filterable<MaybeF> = {
39
+ export const Filterable = HKT.instance<P.Filterable<MaybeF>>({
40
40
  ...Functor,
41
41
  filter: filter_,
42
42
  filterMap: filterMap_,
43
43
  partition: partition_,
44
44
  partitionMap: partitionMap_,
45
- };
45
+ });
46
46
 
47
47
  /**
48
48
  * @tsplus derive fncts.Guard[fncts.Maybe]<_> 10
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * @tsplus type fncts.Newtype
3
3
  */
4
- export interface Newtype<URI, A> {
4
+ export interface Newtype<URI, A, C = HKT.None> {
5
5
  readonly _URI: URI;
6
- readonly [HKT.A]: A;
6
+ readonly _A: A;
7
+ readonly _C: C;
7
8
  }
8
9
 
9
10
  export declare namespace Newtype {
10
- export type Iso<N extends NewtypeHKT> = NewtypeIso<N>;
11
+ export type Iso<N extends NewtypeHKT, C = N["type"]["_C"]> = NewtypeIso<N, C>;
11
12
  }
12
13
 
13
14
  /**
@@ -18,22 +19,42 @@ export interface NewtypeOps {}
18
19
  export const Newtype: NewtypeOps = {};
19
20
 
20
21
  export interface NewtypeHKT extends HKT {
21
- readonly [HKT.T]: Newtype<any, any>;
22
+ readonly type: Newtype<any, any>;
22
23
  }
23
24
 
24
- export interface NewtypeIso<N extends NewtypeHKT> {
25
+ export interface NewtypeIso<N extends NewtypeHKT, C = N["type"]["_C"]> {
25
26
  /**
26
27
  * @tsplus macro identity
27
28
  */
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>;
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>;
31
42
  /**
32
43
  * @tsplus macro identity
33
44
  */
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];
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"];
37
58
  }
38
59
 
39
60
  /**
@@ -1,5 +1,5 @@
1
1
  interface StructN extends HKT {
2
- readonly [HKT.T]: Struct<HKT._A<this>>;
2
+ type: Struct<this["A"]>;
3
3
  }
4
4
 
5
5
  /**
@@ -11,8 +11,8 @@ const _tagHash = Hashable.string("fncts.Tag");
11
11
  * @tsplus type fncts.Tag
12
12
  * @tsplus companion fncts.TagOps
13
13
  */
14
- export class Tag<T> implements Hashable, Equatable {
15
- readonly _T!: (_: never) => T;
14
+ export class Tag<in out T> implements Hashable, Equatable {
15
+ declare _T: (_: T) => T;
16
16
  readonly _typeId: TagTypeId = TagTypeId;
17
17
  private static counter = new AtomicNumber(0);
18
18
  readonly id = Tag.counter.getAndIncrement();