functionalscript 0.2.5 → 0.3.0

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 (433) hide show
  1. package/.github/workflows/ci.yml +19 -4
  2. package/CHANGELOG.md +9 -0
  3. package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
  4. package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
  5. package/com/cpp/testlib.f.ts +8 -0
  6. package/com/cs/{module.f.mjs → module.f.ts} +47 -38
  7. package/com/cs/{test.f.mjs → test.f.ts} +2 -2
  8. package/com/cs/testlib.f.ts +8 -0
  9. package/com/rust/module.f.ts +287 -0
  10. package/com/rust/{test.f.mjs → test.f.ts} +1 -1
  11. package/com/rust/testlib.f.ts +8 -0
  12. package/com/test/{build.f.mjs → build.f.ts} +47 -45
  13. package/com/test/{build.mjs → build.ts} +7 -6
  14. package/com/types/module.f.ts +62 -0
  15. package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
  16. package/commonjs/build/module.f.ts +100 -0
  17. package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
  18. package/commonjs/module/function/module.f.ts +13 -0
  19. package/commonjs/module/module.f.ts +41 -0
  20. package/commonjs/module.f.ts +7 -0
  21. package/commonjs/{module.mjs → module.ts} +12 -9
  22. package/commonjs/package/dependencies/module.f.ts +22 -0
  23. package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
  24. package/commonjs/package/module.f.ts +31 -0
  25. package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
  26. package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
  27. package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
  28. package/commonjs/{test.mjs → test.ts} +5 -4
  29. package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
  30. package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
  31. package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
  32. package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
  33. package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
  34. package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
  35. package/deno.json +71 -0
  36. package/dev/README.md +8 -0
  37. package/dev/index.ts +3 -0
  38. package/dev/{module.f.mjs → module.f.ts} +0 -2
  39. package/dev/{module.mjs → module.ts} +65 -60
  40. package/dev/test/{module.f.mjs → module.f.ts} +57 -70
  41. package/dev/{test.f.mjs → test.f.ts} +7 -5
  42. package/dev/test.ts +53 -0
  43. package/djs/{module.f.mjs → module.f.ts} +31 -31
  44. package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
  45. package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
  46. package/djs/serializer/module.f.ts +90 -0
  47. package/djs/{test.f.mjs → test.f.ts} +4 -4
  48. package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
  49. package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  50. package/fsc/{module.f.mjs → module.f.ts} +41 -44
  51. package/fsc/{test.f.mjs → test.f.ts} +8 -6
  52. package/fsm/module.f.ts +107 -0
  53. package/fsm/{test.f.mjs → test.f.ts} +10 -9
  54. package/html/README.md +10 -9
  55. package/html/module.f.ts +108 -0
  56. package/html/{test.f.mjs → test.f.ts} +10 -7
  57. package/issues/README.md +3 -0
  58. package/issues/lang/3110-function.md +25 -1
  59. package/issues/{test.f.mjs → test.f.ts} +3 -2
  60. package/js/tokenizer/module.f.ts +882 -0
  61. package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
  62. package/json/module.f.ts +94 -0
  63. package/json/parser/{module.f.mjs → module.f.ts} +113 -109
  64. package/json/parser/{test.f.mjs → test.f.ts} +10 -9
  65. package/json/serializer/module.f.ts +70 -0
  66. package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
  67. package/json/{test.f.mjs → test.f.ts} +3 -3
  68. package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
  69. package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  70. package/nanvm-lib/src/extension.rs +15 -4
  71. package/nanvm-lib/src/interface.rs +7 -10
  72. package/nanvm-lib/src/lib.rs +3 -3
  73. package/nanvm-lib/src/naive.rs +10 -3
  74. package/nanvm-lib/src/nanenum.rs +5 -1
  75. package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
  76. package/nodejs/version/{main.mjs → main.ts} +1 -1
  77. package/nodejs/version/module.f.ts +42 -0
  78. package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
  79. package/package.json +9 -9
  80. package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
  81. package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
  82. package/text/module.f.ts +30 -0
  83. package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
  84. package/text/{test.f.mjs → test.f.ts} +5 -4
  85. package/text/utf16/module.f.ts +108 -0
  86. package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
  87. package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
  88. package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
  89. package/tsconfig.json +4 -1
  90. package/types/array/module.f.ts +89 -0
  91. package/types/array/{test.f.mjs → test.f.ts} +3 -3
  92. package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
  93. package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
  94. package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
  95. package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
  96. package/types/bit_vec/README.md +18 -0
  97. package/types/bit_vec/module.f.ts +185 -0
  98. package/types/bit_vec/test.f.ts +129 -0
  99. package/types/btree/find/module.f.ts +92 -0
  100. package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
  101. package/types/btree/{module.f.mjs → module.f.ts} +9 -9
  102. package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
  103. package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
  104. package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
  105. package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
  106. package/types/btree/{test.f.mjs → test.f.ts} +34 -26
  107. package/types/btree/types/module.f.ts +27 -0
  108. package/types/byte_set/module.f.ts +70 -0
  109. package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
  110. package/types/function/compare/module.f.ts +26 -0
  111. package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
  112. package/types/function/module.f.ts +43 -0
  113. package/types/function/operator/module.f.ts +63 -0
  114. package/types/function/test.f.ts +20 -0
  115. package/types/list/module.f.ts +345 -0
  116. package/types/list/{test.f.mjs → test.f.ts} +30 -24
  117. package/types/map/module.f.ts +65 -0
  118. package/types/map/{test.f.mjs → test.f.ts} +6 -5
  119. package/types/nibble_set/module.f.ts +34 -0
  120. package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
  121. package/types/nullable/module.f.ts +9 -0
  122. package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
  123. package/types/number/module.f.ts +16 -0
  124. package/types/number/{test.f.mjs → test.f.ts} +7 -5
  125. package/types/object/module.f.ts +30 -0
  126. package/types/object/{test.f.mjs → test.f.ts} +2 -2
  127. package/types/range/module.f.ts +10 -0
  128. package/types/range/{test.f.mjs → test.f.ts} +1 -1
  129. package/types/range_map/module.f.ts +70 -0
  130. package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
  131. package/types/result/module.f.ts +20 -0
  132. package/types/result/{module.mjs → module.ts} +4 -3
  133. package/types/sorted_list/module.f.ts +83 -0
  134. package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
  135. package/types/sorted_set/module.f.ts +36 -0
  136. package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
  137. package/types/string/module.f.ts +24 -0
  138. package/types/string/{test.f.mjs → test.f.ts} +2 -2
  139. package/types/string_set/module.f.ts +37 -0
  140. package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
  141. package/com/cpp/testlib.f.mjs +0 -8
  142. package/com/cs/testlib.f.mjs +0 -8
  143. package/com/rust/module.f.mjs +0 -272
  144. package/com/rust/testlib.f.mjs +0 -8
  145. package/com/types/module.f.mjs +0 -67
  146. package/commonjs/build/module.f.mjs +0 -100
  147. package/commonjs/module/function/module.f.mjs +0 -21
  148. package/commonjs/module/module.f.mjs +0 -53
  149. package/commonjs/module.f.mjs +0 -11
  150. package/commonjs/package/dependencies/module.f.mjs +0 -22
  151. package/commonjs/package/module.f.mjs +0 -36
  152. package/dev/index.mjs +0 -3
  153. package/dev/test.mjs +0 -60
  154. package/fsm/module.f.mjs +0 -99
  155. package/html/module.f.mjs +0 -102
  156. package/js/tokenizer/module.f.mjs +0 -872
  157. package/json/module.f.mjs +0 -89
  158. package/json/serializer/module.f.mjs +0 -87
  159. package/jsr.json +0 -66
  160. package/nodejs/version/module.f.mjs +0 -47
  161. package/out/com/cpp/module.f.d.mts +0 -7
  162. package/out/com/cpp/module.f.mjs +0 -130
  163. package/out/com/cpp/test.f.d.mts +0 -2
  164. package/out/com/cpp/test.f.mjs +0 -40
  165. package/out/com/cpp/testlib.f.d.mts +0 -2
  166. package/out/com/cpp/testlib.f.mjs +0 -7
  167. package/out/com/cs/module.f.d.mts +0 -7
  168. package/out/com/cs/module.f.mjs +0 -104
  169. package/out/com/cs/test.f.d.mts +0 -2
  170. package/out/com/cs/test.f.mjs +0 -43
  171. package/out/com/cs/testlib.f.d.mts +0 -2
  172. package/out/com/cs/testlib.f.mjs +0 -7
  173. package/out/com/rust/module.f.d.mts +0 -23
  174. package/out/com/rust/module.f.mjs +0 -224
  175. package/out/com/rust/test.f.d.mts +0 -2
  176. package/out/com/rust/test.f.mjs +0 -123
  177. package/out/com/rust/testlib.f.d.mts +0 -2
  178. package/out/com/rust/testlib.f.mjs +0 -7
  179. package/out/com/test/build.d.mts +0 -1
  180. package/out/com/test/build.f.d.mts +0 -26
  181. package/out/com/test/build.f.mjs +0 -98
  182. package/out/com/test/build.mjs +0 -40
  183. package/out/com/types/module.f.d.mts +0 -23
  184. package/out/com/types/module.f.mjs +0 -51
  185. package/out/com/types/testlib.f.d.mts +0 -44
  186. package/out/com/types/testlib.f.mjs +0 -30
  187. package/out/commonjs/build/module.f.d.mts +0 -20
  188. package/out/commonjs/build/module.f.mjs +0 -107
  189. package/out/commonjs/build/test.f.d.mts +0 -3
  190. package/out/commonjs/build/test.f.mjs +0 -102
  191. package/out/commonjs/module/function/module.f.d.mts +0 -5
  192. package/out/commonjs/module/function/module.f.mjs +0 -15
  193. package/out/commonjs/module/module.f.d.mts +0 -52
  194. package/out/commonjs/module/module.f.mjs +0 -48
  195. package/out/commonjs/module.d.mts +0 -3
  196. package/out/commonjs/module.f.d.mts +0 -2
  197. package/out/commonjs/module.f.mjs +0 -10
  198. package/out/commonjs/module.mjs +0 -26
  199. package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
  200. package/out/commonjs/package/dependencies/module.f.mjs +0 -21
  201. package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
  202. package/out/commonjs/package/dependencies/test.f.mjs +0 -15
  203. package/out/commonjs/package/module.f.d.mts +0 -21
  204. package/out/commonjs/package/module.f.mjs +0 -40
  205. package/out/commonjs/package/test.f.d.mts +0 -2
  206. package/out/commonjs/package/test.f.mjs +0 -27
  207. package/out/commonjs/path/module.f.d.mts +0 -60
  208. package/out/commonjs/path/module.f.mjs +0 -171
  209. package/out/commonjs/path/test.f.d.mts +0 -25
  210. package/out/commonjs/path/test.f.mjs +0 -231
  211. package/out/commonjs/test.d.mts +0 -8
  212. package/out/commonjs/test.mjs +0 -87
  213. package/out/crypto/prime_field/module.f.d.mts +0 -67
  214. package/out/crypto/prime_field/module.f.mjs +0 -110
  215. package/out/crypto/prime_field/test.f.d.mts +0 -13
  216. package/out/crypto/prime_field/test.f.mjs +0 -152
  217. package/out/crypto/secp/module.f.d.mts +0 -110
  218. package/out/crypto/secp/module.f.mjs +0 -173
  219. package/out/crypto/secp/test.f.d.mts +0 -5
  220. package/out/crypto/secp/test.f.mjs +0 -78
  221. package/out/crypto/sha2/module.f.d.mts +0 -15
  222. package/out/crypto/sha2/module.f.mjs +0 -172
  223. package/out/crypto/sha2/test.f.d.mts +0 -10
  224. package/out/crypto/sha2/test.f.mjs +0 -86
  225. package/out/dev/index.d.mts +0 -1
  226. package/out/dev/index.mjs +0 -2
  227. package/out/dev/module.d.mts +0 -26
  228. package/out/dev/module.f.d.mts +0 -1
  229. package/out/dev/module.f.mjs +0 -2
  230. package/out/dev/module.mjs +0 -167
  231. package/out/dev/test/module.f.d.mts +0 -25
  232. package/out/dev/test/module.f.mjs +0 -134
  233. package/out/dev/test.d.mts +0 -3
  234. package/out/dev/test.f.d.mts +0 -9
  235. package/out/dev/test.f.mjs +0 -58
  236. package/out/dev/test.mjs +0 -52
  237. package/out/djs/module.f.d.mts +0 -20
  238. package/out/djs/module.f.mjs +0 -79
  239. package/out/djs/parser/module.f.d.mts +0 -56
  240. package/out/djs/parser/module.f.mjs +0 -448
  241. package/out/djs/parser/test.f.d.mts +0 -13
  242. package/out/djs/parser/test.f.mjs +0 -569
  243. package/out/djs/test.f.d.mts +0 -12
  244. package/out/djs/test.f.mjs +0 -84
  245. package/out/djs/tokenizer/module.f.d.mts +0 -13
  246. package/out/djs/tokenizer/module.f.mjs +0 -91
  247. package/out/djs/tokenizer/test.f.d.mts +0 -7
  248. package/out/djs/tokenizer/test.f.mjs +0 -530
  249. package/out/fsc/module.f.d.mts +0 -7
  250. package/out/fsc/module.f.mjs +0 -105
  251. package/out/fsc/test.f.d.mts +0 -4
  252. package/out/fsc/test.f.mjs +0 -19
  253. package/out/fsm/module.f.d.mts +0 -14
  254. package/out/fsm/module.f.mjs +0 -80
  255. package/out/fsm/test.f.d.mts +0 -5
  256. package/out/fsm/test.f.mjs +0 -138
  257. package/out/html/module.f.d.mts +0 -17
  258. package/out/html/module.f.mjs +0 -80
  259. package/out/html/test.f.d.mts +0 -10
  260. package/out/html/test.f.mjs +0 -45
  261. package/out/issues/test.f.d.mts +0 -16
  262. package/out/issues/test.f.mjs +0 -66
  263. package/out/js/tokenizer/module.f.d.mts +0 -163
  264. package/out/js/tokenizer/module.f.mjs +0 -729
  265. package/out/js/tokenizer/test.f.d.mts +0 -9
  266. package/out/js/tokenizer/test.f.mjs +0 -906
  267. package/out/json/module.f.d.mts +0 -33
  268. package/out/json/module.f.mjs +0 -89
  269. package/out/json/parser/module.f.d.mts +0 -32
  270. package/out/json/parser/module.f.mjs +0 -224
  271. package/out/json/parser/test.f.d.mts +0 -5
  272. package/out/json/parser/test.f.mjs +0 -329
  273. package/out/json/serializer/module.f.d.mts +0 -36
  274. package/out/json/serializer/module.f.mjs +0 -67
  275. package/out/json/serializer/test.f.d.mts +0 -8
  276. package/out/json/serializer/test.f.mjs +0 -87
  277. package/out/json/test.f.d.mts +0 -8
  278. package/out/json/test.f.mjs +0 -61
  279. package/out/json/tokenizer/module.f.d.mts +0 -13
  280. package/out/json/tokenizer/module.f.mjs +0 -78
  281. package/out/json/tokenizer/test.f.d.mts +0 -6
  282. package/out/json/tokenizer/test.f.mjs +0 -420
  283. package/out/nanvm-lib/tests/test.f.d.mts +0 -36
  284. package/out/nanvm-lib/tests/test.f.mjs +0 -87
  285. package/out/nodejs/version/main.d.mts +0 -1
  286. package/out/nodejs/version/main.mjs +0 -3
  287. package/out/nodejs/version/module.f.d.mts +0 -12
  288. package/out/nodejs/version/module.f.mjs +0 -34
  289. package/out/nodejs/version/test.f.d.mts +0 -2
  290. package/out/nodejs/version/test.f.mjs +0 -97
  291. package/out/text/ascii/module.f.d.mts +0 -70
  292. package/out/text/ascii/module.f.mjs +0 -154
  293. package/out/text/ascii/test.f.d.mts +0 -4
  294. package/out/text/ascii/test.f.mjs +0 -14
  295. package/out/text/module.f.d.mts +0 -13
  296. package/out/text/module.f.mjs +0 -19
  297. package/out/text/sgr/module.f.d.mts +0 -12
  298. package/out/text/sgr/module.f.mjs +0 -17
  299. package/out/text/test.f.d.mts +0 -2
  300. package/out/text/test.f.mjs +0 -19
  301. package/out/text/utf16/module.f.d.mts +0 -12
  302. package/out/text/utf16/module.f.mjs +0 -86
  303. package/out/text/utf16/test.f.d.mts +0 -6
  304. package/out/text/utf16/test.f.mjs +0 -145
  305. package/out/text/utf8/module.f.d.mts +0 -10
  306. package/out/text/utf8/module.f.mjs +0 -126
  307. package/out/text/utf8/test.f.d.mts +0 -6
  308. package/out/text/utf8/test.f.mjs +0 -175
  309. package/out/types/array/module.f.d.mts +0 -31
  310. package/out/types/array/module.f.mjs +0 -95
  311. package/out/types/array/test.f.d.mts +0 -10
  312. package/out/types/array/test.f.mjs +0 -116
  313. package/out/types/bigfloat/module.f.d.mts +0 -6
  314. package/out/types/bigfloat/module.f.mjs +0 -77
  315. package/out/types/bigfloat/test.f.d.mts +0 -6
  316. package/out/types/bigfloat/test.f.mjs +0 -349
  317. package/out/types/bigint/module.f.d.mts +0 -29
  318. package/out/types/bigint/module.f.mjs +0 -114
  319. package/out/types/bigint/test.f.d.mts +0 -16
  320. package/out/types/bigint/test.f.mjs +0 -199
  321. package/out/types/bit_vec/module.f.d.mts +0 -72
  322. package/out/types/bit_vec/module.f.mjs +0 -83
  323. package/out/types/bit_vec/test.f.d.mts +0 -9
  324. package/out/types/bit_vec/test.f.mjs +0 -60
  325. package/out/types/btree/find/module.f.d.mts +0 -36
  326. package/out/types/btree/find/module.f.mjs +0 -137
  327. package/out/types/btree/find/test.f.d.mts +0 -2
  328. package/out/types/btree/find/test.f.mjs +0 -156
  329. package/out/types/btree/module.f.d.mts +0 -5
  330. package/out/types/btree/module.f.mjs +0 -34
  331. package/out/types/btree/remove/module.f.d.mts +0 -14
  332. package/out/types/btree/remove/module.f.mjs +0 -209
  333. package/out/types/btree/remove/test.f.d.mts +0 -7
  334. package/out/types/btree/remove/test.f.mjs +0 -638
  335. package/out/types/btree/set/module.f.d.mts +0 -5
  336. package/out/types/btree/set/module.f.mjs +0 -114
  337. package/out/types/btree/set/test.f.d.mts +0 -2
  338. package/out/types/btree/set/test.f.mjs +0 -390
  339. package/out/types/btree/test.f.d.mts +0 -13
  340. package/out/types/btree/test.f.mjs +0 -83
  341. package/out/types/btree/types/module.f.d.mts +0 -14
  342. package/out/types/btree/types/module.f.mjs +0 -50
  343. package/out/types/byte_set/module.f.d.mts +0 -25
  344. package/out/types/byte_set/module.f.mjs +0 -42
  345. package/out/types/byte_set/test.f.d.mts +0 -13
  346. package/out/types/byte_set/test.f.mjs +0 -123
  347. package/out/types/function/compare/module.f.d.mts +0 -23
  348. package/out/types/function/compare/module.f.mjs +0 -22
  349. package/out/types/function/compare/test.f.d.mts +0 -2
  350. package/out/types/function/compare/test.f.mjs +0 -8
  351. package/out/types/function/module.f.d.mts +0 -51
  352. package/out/types/function/module.f.mjs +0 -44
  353. package/out/types/function/operator/module.f.d.mts +0 -60
  354. package/out/types/function/operator/module.f.mjs +0 -60
  355. package/out/types/function/test.f.d.mts +0 -2
  356. package/out/types/function/test.f.mjs +0 -15
  357. package/out/types/list/module.f.d.mts +0 -82
  358. package/out/types/list/module.f.mjs +0 -269
  359. package/out/types/list/test.f.d.mts +0 -38
  360. package/out/types/list/test.f.mjs +0 -401
  361. package/out/types/map/module.f.d.mts +0 -21
  362. package/out/types/map/module.f.mjs +0 -54
  363. package/out/types/map/test.f.d.mts +0 -5
  364. package/out/types/map/test.f.mjs +0 -115
  365. package/out/types/nibble_set/module.f.d.mts +0 -16
  366. package/out/types/nibble_set/module.f.mjs +0 -19
  367. package/out/types/nibble_set/test.f.d.mts +0 -13
  368. package/out/types/nibble_set/test.f.mjs +0 -90
  369. package/out/types/nullable/module.f.d.mts +0 -9
  370. package/out/types/nullable/module.f.mjs +0 -9
  371. package/out/types/nullable/test.f.d.mts +0 -2
  372. package/out/types/nullable/test.f.mjs +0 -12
  373. package/out/types/number/module.f.d.mts +0 -7
  374. package/out/types/number/module.f.mjs +0 -12
  375. package/out/types/number/test.f.d.mts +0 -11
  376. package/out/types/number/test.f.mjs +0 -126
  377. package/out/types/object/module.f.d.mts +0 -22
  378. package/out/types/object/module.f.mjs +0 -27
  379. package/out/types/object/test.f.d.mts +0 -5
  380. package/out/types/object/test.f.mjs +0 -17
  381. package/out/types/range/module.f.d.mts +0 -6
  382. package/out/types/range/module.f.mjs +0 -6
  383. package/out/types/range/test.f.d.mts +0 -2
  384. package/out/types/range/test.f.mjs +0 -18
  385. package/out/types/range_map/module.f.d.mts +0 -19
  386. package/out/types/range_map/module.f.mjs +0 -84
  387. package/out/types/range_map/test.f.d.mts +0 -6
  388. package/out/types/range_map/test.f.mjs +0 -201
  389. package/out/types/result/module.d.mts +0 -7
  390. package/out/types/result/module.f.d.mts +0 -22
  391. package/out/types/result/module.f.mjs +0 -25
  392. package/out/types/result/module.mjs +0 -16
  393. package/out/types/sorted_list/module.f.d.mts +0 -53
  394. package/out/types/sorted_list/module.f.mjs +0 -102
  395. package/out/types/sorted_list/test.f.d.mts +0 -5
  396. package/out/types/sorted_list/test.f.mjs +0 -66
  397. package/out/types/sorted_set/module.f.d.mts +0 -19
  398. package/out/types/sorted_set/module.f.mjs +0 -29
  399. package/out/types/sorted_set/test.f.d.mts +0 -6
  400. package/out/types/sorted_set/test.f.mjs +0 -80
  401. package/out/types/string/module.f.d.mts +0 -9
  402. package/out/types/string/module.f.mjs +0 -17
  403. package/out/types/string/test.f.d.mts +0 -15
  404. package/out/types/string/test.f.mjs +0 -58
  405. package/out/types/string_set/module.f.d.mts +0 -13
  406. package/out/types/string_set/module.f.mjs +0 -29
  407. package/out/types/string_set/test.f.d.mts +0 -5
  408. package/out/types/string_set/test.f.mjs +0 -65
  409. package/text/module.f.mjs +0 -27
  410. package/text/utf16/module.f.mjs +0 -96
  411. package/types/array/module.f.mjs +0 -119
  412. package/types/bit_vec/module.f.mjs +0 -90
  413. package/types/bit_vec/test.f.mjs +0 -41
  414. package/types/btree/find/module.f.mjs +0 -125
  415. package/types/btree/types/module.f.mjs +0 -64
  416. package/types/byte_set/module.f.mjs +0 -61
  417. package/types/function/compare/module.f.mjs +0 -29
  418. package/types/function/module.f.mjs +0 -50
  419. package/types/function/operator/module.f.mjs +0 -78
  420. package/types/function/test.f.mjs +0 -17
  421. package/types/list/module.f.mjs +0 -320
  422. package/types/map/module.f.mjs +0 -67
  423. package/types/nibble_set/module.f.mjs +0 -28
  424. package/types/nullable/module.f.mjs +0 -11
  425. package/types/number/module.f.mjs +0 -16
  426. package/types/object/module.f.mjs +0 -33
  427. package/types/range/module.f.mjs +0 -8
  428. package/types/range_map/module.f.mjs +0 -84
  429. package/types/result/module.f.mjs +0 -28
  430. package/types/sorted_list/module.f.mjs +0 -107
  431. package/types/sorted_set/module.f.mjs +0 -38
  432. package/types/string/module.f.mjs +0 -22
  433. package/types/string_set/module.f.mjs +0 -36
@@ -1,25 +0,0 @@
1
- /** @typedef {bigint} ByteSet */
2
- /** @typedef {number} Byte */
3
- /** @type {(n: Byte) => (s: ByteSet) => boolean} */
4
- export const has: (n: Byte) => (s: ByteSet) => boolean;
5
- export const empty: 0n;
6
- export const universe: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;
7
- /** @type {(n: Byte) => ByteSet} */
8
- export const one: (n: Byte) => ByteSet;
9
- /** @type {(r: readonly[Byte, Byte]) => ByteSet} */
10
- export const range: (r: readonly [Byte, Byte]) => ByteSet;
11
- /** @type {(a: ByteSet) => (b: ByteSet) => ByteSet} */
12
- export const union: (a: ByteSet) => (b: ByteSet) => ByteSet;
13
- /** @type {(n: ByteSet) => ByteSet} */
14
- export const complement: (n: ByteSet) => ByteSet;
15
- export const set: f.Func<number, (b: ByteSet) => ByteSet>;
16
- export const setRange: f.Func<readonly [number, number], (b: ByteSet) => ByteSet>;
17
- /** @type {(n: Byte) => (s: ByteSet) => ByteSet} */
18
- export const unset: (n: Byte) => (s: ByteSet) => ByteSet;
19
- /** @type {(n: ByteSet) => (s: string) => RangeMap.RangeMap<SortedSet.SortedSet<string>>} */
20
- export const toRangeMap: (n: ByteSet) => (s: string) => RangeMap.RangeMap<SortedSet.SortedSet<string>>;
21
- export type ByteSet = bigint;
22
- export type Byte = number;
23
- import * as f from '../function/module.f.mjs';
24
- import * as RangeMap from '../range_map/module.f.mjs';
25
- import * as SortedSet from '../sorted_set/module.f.mjs';
@@ -1,42 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as f from '../function/module.f.mjs';
3
- const { compose } = f;
4
- import * as RangeMap from '../range_map/module.f.mjs';
5
- import * as SortedSet from '../sorted_set/module.f.mjs';
6
- import * as list from '../list/module.f.mjs';
7
- const { reverse, countdown, flat, map } = list;
8
- /** @typedef {bigint} ByteSet */
9
- /** @typedef {number} Byte */
10
- /** @type {(n: Byte) => (s: ByteSet) => boolean} */
11
- export const has = n => s => ((s >> BigInt(n)) & 1n) === 1n;
12
- // create a set
13
- export const empty = 0n;
14
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
15
- export const universe = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;
16
- /** @type {(n: Byte) => ByteSet} */
17
- export const one = n => 1n << BigInt(n);
18
- /** @type {(r: readonly[Byte, Byte]) => ByteSet} */
19
- export const range = ([b, e]) => one(e - b + 1) - 1n << BigInt(b);
20
- // set operations
21
- /** @type {(a: ByteSet) => (b: ByteSet) => ByteSet} */
22
- export const union = a => b => a | b;
23
- /** @type {(a: ByteSet) => (b: ByteSet) => ByteSet} */
24
- const intersect = a => b => a & b;
25
- /** @type {(n: ByteSet) => ByteSet} */
26
- export const complement = n => universe ^ n;
27
- /** @type {(a: ByteSet) => (b: ByteSet) => ByteSet} */
28
- const difference = compose(intersect)(compose(complement));
29
- // additional operations
30
- export const set = compose(one)(union);
31
- export const setRange = compose(range)(union);
32
- /** @type {(n: Byte) => (s: ByteSet) => ByteSet} */
33
- export const unset = n => s => difference(s)(one(n));
34
- const counter = reverse(countdown(256));
35
- /** @type {(n: ByteSet) => (s: string) => (i: number) => RangeMap.RangeMap<SortedSet.SortedSet<string>>} */
36
- const toRangeMapOp = n => s => i => {
37
- const current = has(i + 1)(n);
38
- const prev = has(i)(n);
39
- return current === prev ? null : [[prev ? [s] : [], i]];
40
- };
41
- /** @type {(n: ByteSet) => (s: string) => RangeMap.RangeMap<SortedSet.SortedSet<string>>} */
42
- export const toRangeMap = n => s => flat(map(toRangeMapOp(n)(s))(counter));
@@ -1,13 +0,0 @@
1
- declare namespace _default {
2
- let has: (() => void)[];
3
- function setRange(): void;
4
- let unset: (() => void)[];
5
- function universe(): void;
6
- namespace compliment {
7
- export function empty(): void;
8
- export function universe_1(): void;
9
- export { universe_1 as universe };
10
- }
11
- let toRangeMap: (() => void)[];
12
- }
13
- export default _default;
@@ -1,123 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- import * as list from '../list/module.f.mjs';
3
- const { every, countdown, map, toArray } = list;
4
- import * as json from '../../json/module.f.mjs';
5
- import * as o from '../object/module.f.mjs';
6
- const { sort } = o;
7
- /** @type {(a: readonly json.Unknown[]) => string} */
8
- const stringify = json.stringify(sort);
9
- export default {
10
- has: [
11
- () => {
12
- if (_.has(0)(_.empty)) {
13
- throw _.empty;
14
- }
15
- if (_.has(1)(_.empty)) {
16
- throw _.empty;
17
- }
18
- if (_.has(33)(_.empty)) {
19
- throw _.empty;
20
- }
21
- },
22
- () => {
23
- const s = _.set(0)(_.empty);
24
- if (s !== 1n) {
25
- throw s;
26
- }
27
- if (!_.has(0)(s)) {
28
- throw s;
29
- }
30
- if (_.has(1)(s)) {
31
- throw s;
32
- }
33
- if (_.has(33)(s)) {
34
- throw s;
35
- }
36
- },
37
- () => {
38
- const s = _.set(33)(_.empty);
39
- if (s !== 8589934592n) {
40
- throw s;
41
- }
42
- if (_.has(0)(s)) {
43
- throw s;
44
- }
45
- if (_.has(1)(s)) {
46
- throw s;
47
- }
48
- if (!_.has(33)(s)) {
49
- throw s;
50
- }
51
- }
52
- ],
53
- setRange: () => {
54
- const result = _.setRange([2, 5])(_.empty);
55
- if (result !== 60n) {
56
- throw result;
57
- }
58
- },
59
- unset: [
60
- () => {
61
- const a = _.set(0)(_.empty);
62
- const result = _.unset(0)(a);
63
- if (result !== 0n) {
64
- throw result;
65
- }
66
- },
67
- () => {
68
- const a = _.set(255)(_.empty);
69
- const result = _.unset(255)(a);
70
- if (result !== 0n) {
71
- throw result;
72
- }
73
- }
74
- ],
75
- universe: () => {
76
- const x = every(map(v => _.has(v)(_.universe))(countdown(256)));
77
- if (!x) {
78
- throw x;
79
- }
80
- },
81
- compliment: {
82
- empty: () => {
83
- const r = _.complement(_.empty);
84
- if (r !== _.universe) {
85
- throw r;
86
- }
87
- },
88
- universe: () => {
89
- const r = _.complement(_.universe);
90
- if (r !== _.empty) {
91
- throw r;
92
- }
93
- },
94
- },
95
- toRangeMap: [
96
- () => {
97
- const result = stringify(toArray(_.toRangeMap(_.empty)('a')));
98
- if (result !== '[]') {
99
- throw result;
100
- }
101
- },
102
- () => {
103
- const s = _.set(0)(_.empty);
104
- const result = stringify(toArray(_.toRangeMap(s)('a')));
105
- if (result !== '[[["a"],0]]') {
106
- throw result;
107
- }
108
- },
109
- () => {
110
- const s = _.setRange([1, 2])(_.empty);
111
- const result = stringify(toArray(_.toRangeMap(s)('a')));
112
- if (result !== '[[[],0],[["a"],2]]') {
113
- throw result;
114
- }
115
- },
116
- () => {
117
- const result = stringify(toArray(_.toRangeMap(_.universe)('a')));
118
- if (result !== '[[["a"],255]]') {
119
- throw result;
120
- }
121
- },
122
- ]
123
- };
@@ -1,23 +0,0 @@
1
- /** @typedef {Array.Index3} Index3 */
2
- /** @typedef {Array.Index5} Index5 */
3
- /**
4
- * @template T
5
- * @typedef {Array.Array2<T>} Array2
6
- */
7
- /** @typedef {-1|0|1} Sign */
8
- /**
9
- * @template T
10
- * @typedef {(_: T) => Sign} Compare
11
- */
12
- /** @type {<T>(cmp: Compare<T>) => (value: T) => Index3} */
13
- export const index3: <T>(cmp: Compare<T>) => (value: T) => Index3;
14
- /** @type {<T>(cmp: Compare<T>) => (v2: Array2<T>) => Index5} */
15
- export const index5: <T>(cmp: Compare<T>) => (v2: Array2<T>) => Index5;
16
- /** @type {<T>(a: T) => (b: T) => Sign} */
17
- export const unsafeCmp: <T>(a: T) => (b: T) => Sign;
18
- export type Index3 = Array.Index3;
19
- export type Index5 = Array.Index5;
20
- export type Array2<T> = Array.Array2<T>;
21
- export type Sign = -1 | 0 | 1;
22
- export type Compare<T> = (_: T) => Sign;
23
- import * as Array from '../../array/module.f.mjs';
@@ -1,22 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as Array from '../../array/module.f.mjs';
3
- /** @typedef {Array.Index3} Index3 */
4
- /** @typedef {Array.Index5} Index5 */
5
- /**
6
- * @template T
7
- * @typedef {Array.Array2<T>} Array2
8
- */
9
- /** @typedef {-1|0|1} Sign */
10
- /**
11
- * @template T
12
- * @typedef {(_: T) => Sign} Compare
13
- */
14
- /** @type {<T>(cmp: Compare<T>) => (value: T) => Index3} */
15
- export const index3 = cmp => value => /** @type {Index3} */ (cmp(value) + 1);
16
- /** @type {<T>(cmp: Compare<T>) => (v2: Array2<T>) => Index5} */
17
- export const index5 = cmp => ([v0, v1]) => {
18
- const _0 = cmp(v0);
19
- return /** @type {Index5} */ (_0 <= 0 ? _0 + 1 : cmp(v1) + 3);
20
- };
21
- /** @type {<T>(a: T) => (b: T) => Sign} */
22
- export const unsafeCmp = a => b => a < b ? -1 : a > b ? 1 : 0;
@@ -1,2 +0,0 @@
1
- declare function _default(): void;
2
- export default _default;
@@ -1,8 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- const { unsafeCmp } = _;
3
- export default () => {
4
- const result = unsafeCmp(true)(false);
5
- if (result !== 1) {
6
- throw result;
7
- }
8
- };
@@ -1,51 +0,0 @@
1
- /**
2
- * A generic function type.
3
- *
4
- * @template I
5
- * @template O
6
- * @typedef {(_: I) => O} Func
7
- */
8
- /**
9
- * A postfix compose function.
10
- *
11
- * @type {<I, X>(g: Func<I, X>) => <O>(f: Func<X, O>) => Func<I, O>}
12
- */
13
- export const compose: <I, X>(g: Func<I, X>) => <O>(f: Func<X, O>) => Func<I, O>;
14
- /**
15
- * A generic identity function.
16
- *
17
- * @type {<T>(value: T) => T}
18
- */
19
- export const identity: <T>(value: T) => T;
20
- /**
21
- * Flips the arguments of a curried function.
22
- *
23
- * @type {<A, B, C>(f: (a: A) => (b: B) => C) => (b: B) => (a: A) => C}
24
- */
25
- export const flip: <A, B, C>(f: (a: A) => (b: B) => C) => (b: B) => (a: A) => C;
26
- /**
27
- * A functional utility type that enables seamless chaining of transformations.
28
- *
29
- * @template I,O
30
- * @typedef {{
31
- * readonly result: Func<I, O>
32
- * readonly then: <T>(g: Func<O, T>) => Fn<I, T>
33
- * }} Fn
34
- */
35
- /**
36
- * Creates an `Fn` instance from a function, enabling chaining of transformations.
37
- *
38
- * @type {<I, O>(f: (i: I) => O) => Fn<I, O>}
39
- */
40
- export const fn: <I, O>(f: (i: I) => O) => Fn<I, O>;
41
- /**
42
- * A generic function type.
43
- */
44
- export type Func<I, O> = (_: I) => O;
45
- /**
46
- * A functional utility type that enables seamless chaining of transformations.
47
- */
48
- export type Fn<I, O> = {
49
- readonly result: Func<I, O>;
50
- readonly then: <T>(g: Func<O, T>) => Fn<I, T>;
51
- };
@@ -1,44 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- /**
3
- * A generic function type.
4
- *
5
- * @template I
6
- * @template O
7
- * @typedef {(_: I) => O} Func
8
- */
9
- /**
10
- * A postfix compose function.
11
- *
12
- * @type {<I, X>(g: Func<I, X>) => <O>(f: Func<X, O>) => Func<I, O>}
13
- */
14
- export const compose = g => f => x => f(g(x));
15
- /**
16
- * A generic identity function.
17
- *
18
- * @type {<T>(value: T) => T}
19
- */
20
- export const identity = value => value;
21
- /**
22
- * Flips the arguments of a curried function.
23
- *
24
- * @type {<A, B, C>(f: (a: A) => (b: B) => C) => (b: B) => (a: A) => C}
25
- */
26
- export const flip = f => b => a => f(a)(b);
27
- /**
28
- * A functional utility type that enables seamless chaining of transformations.
29
- *
30
- * @template I,O
31
- * @typedef {{
32
- * readonly result: Func<I, O>
33
- * readonly then: <T>(g: Func<O, T>) => Fn<I, T>
34
- * }} Fn
35
- */
36
- /**
37
- * Creates an `Fn` instance from a function, enabling chaining of transformations.
38
- *
39
- * @type {<I, O>(f: (i: I) => O) => Fn<I, O>}
40
- */
41
- export const fn = result => ({
42
- result,
43
- then: g => fn(compose(result)(g))
44
- });
@@ -1,60 +0,0 @@
1
- /**
2
- * @template A
3
- * @template B
4
- * @template R
5
- * @typedef {(a: A) => (b: B) => R} Binary
6
- */
7
- /**
8
- * @template I,O
9
- * @typedef {Binary<I, O, O>} Fold
10
- */
11
- /** @type {(separator: string) => Reduce<string>} */
12
- export const join: (separator: string) => Reduce<string>;
13
- /** @type {Reduce<string>} */
14
- export const concat: Reduce<string>;
15
- /**
16
- * @template T
17
- * @template R
18
- * @typedef {(value: T) => R} Unary
19
- */
20
- /** @type {Unary<boolean, boolean>} */
21
- export const logicalNot: Unary<boolean, boolean>;
22
- /**
23
- * @template T
24
- * @typedef {Binary<T, T, boolean>} Equal
25
- */
26
- /** @type {<T>(a: T) => (b: T) => boolean} */
27
- export const strictEqual: <T>(a: T) => (b: T) => boolean;
28
- /**
29
- * @template I,O
30
- * @typedef {(input: I) => readonly[O, Scan<I,O>]} Scan
31
- */
32
- /**
33
- * @template I,S,O
34
- * @typedef {(prior: S) => (input: I) => readonly[O, S]} StateScan
35
- */
36
- /** @type {<I, S, O>(op: StateScan<I, S, O>) => (prior: S) => Scan<I, O>} */
37
- export const stateScanToScan: <I, S, O>(op: StateScan<I, S, O>) => (prior: S) => Scan<I, O>;
38
- /** @type {<I, O>(fold: Fold<I, O>) => (prior: O) => Scan<I, O>} */
39
- export const foldToScan: <I, O>(fold: Fold<I, O>) => (prior: O) => Scan<I, O>;
40
- /**
41
- * @template T
42
- * @typedef {Fold<T, T>} Reduce
43
- */
44
- /** @type {<T>(fold: Reduce<T>) => Scan<T, T>} */
45
- export const reduceToScan: <T>(fold: Reduce<T>) => Scan<T, T>;
46
- /** @type {Reduce<number>} */
47
- export const addition: Reduce<number>;
48
- /** @type {Reduce<number>} */
49
- export const min: Reduce<number>;
50
- /** @type {Reduce<number>} */
51
- export const max: Reduce<number>;
52
- export const increment: (b: number) => number;
53
- export function counter(): (b: number) => number;
54
- export type Binary<A, B, R> = (a: A) => (b: B) => R;
55
- export type Fold<I, O> = Binary<I, O, O>;
56
- export type Unary<T, R> = (value: T) => R;
57
- export type Equal<T> = Binary<T, T, boolean>;
58
- export type Scan<I, O> = (input: I) => readonly [O, Scan<I, O>];
59
- export type StateScan<I, S, O> = (prior: S) => (input: I) => readonly [O, S];
60
- export type Reduce<T> = Fold<T, T>;
@@ -1,60 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- /**
3
- * @template A
4
- * @template B
5
- * @template R
6
- * @typedef {(a: A) => (b: B) => R} Binary
7
- */
8
- /**
9
- * @template I,O
10
- * @typedef {Binary<I, O, O>} Fold
11
- */
12
- /** @type {(separator: string) => Reduce<string>} */
13
- export const join = separator => value => prior => `${prior}${separator}${value}`;
14
- /** @type {Reduce<string>} */
15
- export const concat = i => acc => `${acc}${i}`;
16
- /**
17
- * @template T
18
- * @template R
19
- * @typedef {(value: T) => R} Unary
20
- */
21
- /** @type {Unary<boolean, boolean>} */
22
- export const logicalNot = v => !v;
23
- /**
24
- * @template T
25
- * @typedef {Binary<T, T, boolean>} Equal
26
- */
27
- /** @type {<T>(a: T) => (b: T) => boolean} */
28
- export const strictEqual = a => b => a === b;
29
- /**
30
- * @template I,O
31
- * @typedef {(input: I) => readonly[O, Scan<I,O>]} Scan
32
- */
33
- /**
34
- * @template I,S,O
35
- * @typedef {(prior: S) => (input: I) => readonly[O, S]} StateScan
36
- */
37
- /** @type {<I, S, O>(op: StateScan<I, S, O>) => (prior: S) => Scan<I, O>} */
38
- export const stateScanToScan = op => prior => i => {
39
- const [o, s] = op(prior)(i);
40
- return [o, stateScanToScan(op)(s)];
41
- };
42
- /** @type {<I, O>(fold: Fold<I, O>) => (prior: O) => Scan<I, O>} */
43
- export const foldToScan = fold => prior => i => {
44
- const result = fold(i)(prior);
45
- return [result, foldToScan(fold)(result)];
46
- };
47
- /**
48
- * @template T
49
- * @typedef {Fold<T, T>} Reduce
50
- */
51
- /** @type {<T>(fold: Reduce<T>) => Scan<T, T>} */
52
- export const reduceToScan = op => init => [init, foldToScan(op)(init)];
53
- /** @type {Reduce<number>} */
54
- export const addition = a => b => a + b;
55
- /** @type {Reduce<number>} */
56
- export const min = a => b => a < b ? a : b;
57
- /** @type {Reduce<number>} */
58
- export const max = a => b => a > b ? a : b;
59
- export const increment = addition(1);
60
- export const counter = () => increment;
@@ -1,2 +0,0 @@
1
- declare function _default(): void;
2
- export default _default;
@@ -1,15 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- const { fn } = _;
3
- export default () => {
4
- /** @type {(x: string) => readonly[string]} */
5
- const f = x => [x];
6
- /** @type {(x: readonly[string]) => readonly[number]} */
7
- const g = ([x]) => [x.length];
8
- /** @type {(x: readonly[number]) => number} */
9
- const w = ([x]) => x;
10
- const r = fn(f).then(g).then(w).result;
11
- const result = r('hello');
12
- if (result !== 5) {
13
- throw r;
14
- }
15
- };
@@ -1,82 +0,0 @@
1
- /** @type {<T>(head: List<T>) => (tail: List<T>) => List<T>} */
2
- export const concat: <T>(head: List<T>) => (tail: List<T>) => List<T>;
3
- /** @type {<T>(list: List<T>) => Result<T>} */
4
- export const next: <T>(list: List<T>) => Result<T>;
5
- /** @type {<T>(list: List<T>) => Iterable<T>} */
6
- export const iterable: <T>(list: List<T>) => Iterable<T>;
7
- /** @type {<T>(list: List<T>) => readonly T[]} */
8
- export const toArray: <T>(list: List<T>) => readonly T[];
9
- /** @type {<T>(list: List<List<T>>) => Thunk<T>} */
10
- export const flat: <T>(list: List<List<T>>) => Thunk<T>;
11
- /** @type {<I, O>(f: (value: I) => O) => (input: List<I>) => Thunk<O>} */
12
- export const map: <I, O>(f: (value: I) => O) => (input: List<I>) => Thunk<O>;
13
- /** @type {<I, O>(f: (value: I) => List<O>) => (input: List<I>) => Thunk<O>} */
14
- export const flatMap: <I, O>(f: (value: I) => List<O>) => (input: List<I>) => Thunk<O>;
15
- /** @type {<T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>} */
16
- export const filter: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
17
- /** @type {<I, O>(f: (value: I) => O|null) => (input: List<I>) => Thunk<O>} */
18
- export const filterMap: <I, O>(f: (value: I) => O | null) => (input: List<I>) => Thunk<O>;
19
- /** @type {<T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>} */
20
- export const takeWhile: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
21
- /** @type {(n: number) => <T>(input: List<T>) => Thunk<T>} */
22
- export const take: (n: number) => <T>(input: List<T>) => Thunk<T>;
23
- /** @type {<T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>} */
24
- export const dropWhile: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
25
- /** @type {(n: number) => <T>(input: List<T>) => Thunk<T>} */
26
- export const drop: (n: number) => <T>(input: List<T>) => Thunk<T>;
27
- /** @type {<D>(def: D) => <T>(input: List<T>) => D|T} */
28
- export const first: <D>(def: D) => <T>(input: List<T>) => D | T;
29
- /** @type {<D>(first: D) => <T>(tail: List<T>) => D|T} */
30
- export const last: <D>(first: D) => <T>(tail: List<T>) => D | T;
31
- /** @type {<D>(def: D) => <T>(f: (value: T) => boolean) => (input: List<T>) => D|T} */
32
- export const find: <D>(def: D) => <T>(f: (value: T) => boolean) => (input: List<T>) => D | T;
33
- /** @type {(input: List<boolean>) => boolean} */
34
- export const some: (input: List<boolean>) => boolean;
35
- /** @type {<T>(input: List<T>) => boolean} */
36
- export const isEmpty: <T>(input: List<T>) => boolean;
37
- export const every: function_.Func<List<boolean>, boolean>;
38
- /** @type {<T>(value: T) => (sequence: List<T>) => boolean} */
39
- export const includes: <T>(value: T) => (sequence: List<T>) => boolean;
40
- /** @type {(count: number) => Thunk<number>} */
41
- export const countdown: (count: number) => Thunk<number>;
42
- /** @type {<T>(v: T) => (c: number) => Thunk<T>} */
43
- export const repeat: <T>(v: T) => (c: number) => Thunk<T>;
44
- /** @type {<T>(list: List<T>) => List<T>} */
45
- export const cycle: <T>(list: List<T>) => List<T>;
46
- /** @type {<I, O>(op: operator.Scan<I, O>) => (input: List<I>) => Thunk<O>} */
47
- export const scan: <I, O>(op: operator.Scan<I, O>) => (input: List<I>) => Thunk<O>;
48
- /** @type {<I, S, O>(op: operator.StateScan<I, S, O>) => (init: S) => (input: List<I>) => Thunk<O>} */
49
- export const stateScan: <I, S, O>(op: operator.StateScan<I, S, O>) => (init: S) => (input: List<I>) => Thunk<O>;
50
- /** @type {<I,O>(op: operator.Fold<I, O>) => (init: O) => (input: List<I>) => Thunk<O>} */
51
- export const foldScan: <I, O>(op: operator.Fold<I, O>) => (init: O) => (input: List<I>) => Thunk<O>;
52
- /** @type {<I,O>(op: operator.Fold<I, O>) => (init: O) => (input: List<I>) => O} */
53
- export const fold: <I, O>(op: operator.Fold<I, O>) => (init: O) => (input: List<I>) => O;
54
- /** @type {<T>(op: operator.Reduce<T>) => <D>(def: D) => (input: List<T>) => D|T} */
55
- export const reduce: <T>(op: operator.Reduce<T>) => <D>(def: D) => (input: List<T>) => D | T;
56
- /** @type {<T>(input: List<T>) => number} */
57
- export const length: <T>(input: List<T>) => number;
58
- /** @type {<T>(input: List<T>) => Thunk<Entry<T>>} */
59
- export const entries: <T>(input: List<T>) => Thunk<Entry<T>>;
60
- /** @type {<T>(input: List<T>) => List<T>} */
61
- export const reverse: <T>(input: List<T>) => List<T>;
62
- /** @type {<A>(a: List<A>) => <B>(b: List<B>) => Thunk<readonly[A, B]>} */
63
- export const zip: <A>(a: List<A>) => <B>(b: List<B>) => Thunk<readonly [A, B]>;
64
- /** @type {<T>(e: operator.Equal<T>) => (a: List<T>) => (b: List<T>) => boolean} */
65
- export const equal: <T>(e: operator.Equal<T>) => (a: List<T>) => (b: List<T>) => boolean;
66
- export const empty: null;
67
- export type List<T> = NotLazy<T> | Thunk<T>;
68
- export type NotLazy<T> = Result<T> | Concat<T> | readonly T[];
69
- export type Empty = null;
70
- export type Result<T> = Empty | NonEmpty<T>;
71
- export type Thunk<T> = () => List<T>;
72
- export type NonEmpty<T> = {
73
- readonly first: T;
74
- readonly tail: List<T>;
75
- };
76
- export type Concat<T> = {
77
- readonly head: List<T>;
78
- readonly tail: List<T>;
79
- };
80
- export type Entry<T> = readonly [number, T];
81
- import * as function_ from '../function/module.f.mjs';
82
- import * as operator from '../function/operator/module.f.mjs';