functionalscript 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/com/cpp/module.f.d.ts +10 -0
  2. package/com/cpp/module.f.js +107 -0
  3. package/com/cpp/test.f.d.ts +2 -0
  4. package/com/cpp/{test.f.ts → test.f.js} +9 -11
  5. package/com/cpp/testlib.f.d.ts +2 -0
  6. package/com/cpp/testlib.f.js +5 -0
  7. package/com/cs/module.f.d.ts +12 -0
  8. package/com/cs/module.f.js +80 -0
  9. package/com/cs/test.f.d.ts +2 -0
  10. package/com/cs/{test.f.ts → test.f.js} +9 -11
  11. package/com/cs/testlib.f.d.ts +2 -0
  12. package/com/cs/testlib.f.js +5 -0
  13. package/com/rust/module.f.d.ts +15 -0
  14. package/com/rust/module.f.js +169 -0
  15. package/com/rust/test.f.d.ts +2 -0
  16. package/com/rust/{test.f.ts → test.f.js} +7 -7
  17. package/com/rust/testlib.f.d.ts +2 -0
  18. package/com/rust/testlib.f.js +5 -0
  19. package/com/test/build.f.d.ts +20 -0
  20. package/com/test/build.f.js +58 -0
  21. package/com/types/module.f.d.ts +28 -0
  22. package/com/types/module.f.js +8 -0
  23. package/com/types/testlib.f.d.ts +44 -0
  24. package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
  25. package/commonjs/build/module.f.d.ts +6 -0
  26. package/commonjs/build/module.f.js +69 -0
  27. package/commonjs/build/test.f.d.ts +2 -0
  28. package/commonjs/build/test.f.js +96 -0
  29. package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
  30. package/commonjs/module/function/module.f.js +4 -0
  31. package/commonjs/module/module.f.d.ts +18 -0
  32. package/commonjs/module/module.f.js +12 -0
  33. package/commonjs/module.f.d.ts +6 -0
  34. package/commonjs/module.f.js +1 -0
  35. package/commonjs/package/dependencies/module.f.d.ts +7 -0
  36. package/commonjs/package/dependencies/module.f.js +13 -0
  37. package/commonjs/package/dependencies/test.f.d.ts +2 -0
  38. package/commonjs/package/dependencies/test.f.js +15 -0
  39. package/commonjs/package/module.f.d.ts +17 -0
  40. package/commonjs/package/module.f.js +18 -0
  41. package/commonjs/package/test.f.d.ts +2 -0
  42. package/commonjs/package/test.f.js +27 -0
  43. package/commonjs/path/module.f.d.ts +24 -0
  44. package/commonjs/path/module.f.js +114 -0
  45. package/commonjs/path/test.f.d.ts +25 -0
  46. package/commonjs/path/{test.f.ts → test.f.js} +123 -89
  47. package/crypto/prime_field/module.f.d.ts +43 -0
  48. package/crypto/prime_field/module.f.js +78 -0
  49. package/crypto/prime_field/test.f.d.ts +13 -0
  50. package/crypto/prime_field/test.f.js +149 -0
  51. package/crypto/secp/module.f.d.ts +68 -0
  52. package/crypto/secp/module.f.js +127 -0
  53. package/crypto/secp/test.f.d.ts +5 -0
  54. package/crypto/secp/test.f.js +72 -0
  55. package/crypto/sha2/module.f.d.ts +13 -0
  56. package/crypto/sha2/module.f.js +145 -0
  57. package/crypto/sha2/test.f.d.ts +9 -0
  58. package/crypto/sha2/test.f.js +82 -0
  59. package/dev/module.f.d.ts +1 -0
  60. package/dev/module.f.js +1 -0
  61. package/dev/test/module.f.d.ts +20 -0
  62. package/dev/test/module.f.js +75 -0
  63. package/dev/test.f.d.ts +9 -0
  64. package/dev/{test.f.ts → test.f.js} +22 -24
  65. package/djs/module.f.d.ts +17 -0
  66. package/djs/module.f.js +63 -0
  67. package/djs/parser/module.f.d.ts +12 -0
  68. package/djs/parser/module.f.js +333 -0
  69. package/djs/parser/test.f.d.ts +12 -0
  70. package/djs/parser/test.f.js +717 -0
  71. package/djs/serializer/module.f.d.ts +9 -0
  72. package/djs/serializer/module.f.js +81 -0
  73. package/djs/test/input.f.d.ts +2 -0
  74. package/djs/test/input.f.js +4 -0
  75. package/djs/test/m.f.d.ts +2 -0
  76. package/djs/test/m.f.js +1 -0
  77. package/djs/test.f.d.ts +12 -0
  78. package/djs/test.f.js +84 -0
  79. package/djs/tokenizer/module.f.d.ts +8 -0
  80. package/djs/tokenizer/module.f.js +60 -0
  81. package/djs/tokenizer/test.f.d.ts +7 -0
  82. package/djs/tokenizer/test.f.js +529 -0
  83. package/fsc/module.f.d.ts +5 -0
  84. package/fsc/module.f.js +75 -0
  85. package/fsc/test.f.d.ts +4 -0
  86. package/fsc/test.f.js +19 -0
  87. package/fsm/module.f.d.ts +13 -0
  88. package/fsm/module.f.js +59 -0
  89. package/fsm/test.f.d.ts +5 -0
  90. package/fsm/test.f.js +137 -0
  91. package/html/module.f.d.ts +13 -0
  92. package/html/module.f.js +58 -0
  93. package/html/test.f.d.ts +9 -0
  94. package/html/test.f.js +42 -0
  95. package/issues/test.f.d.ts +16 -0
  96. package/issues/test.f.js +70 -0
  97. package/js/tokenizer/module.f.d.ts +86 -0
  98. package/js/tokenizer/module.f.js +503 -0
  99. package/js/tokenizer/test.f.d.ts +9 -0
  100. package/js/tokenizer/test.f.js +905 -0
  101. package/json/module.f.d.ts +20 -0
  102. package/json/module.f.js +68 -0
  103. package/json/parser/module.f.d.ts +5 -0
  104. package/json/parser/module.f.js +155 -0
  105. package/json/parser/test.f.d.ts +5 -0
  106. package/json/parser/test.f.js +328 -0
  107. package/json/serializer/module.f.d.ts +7 -0
  108. package/json/serializer/module.f.js +21 -0
  109. package/json/serializer/test.f.d.ts +8 -0
  110. package/json/serializer/test.f.js +87 -0
  111. package/json/test.f.d.ts +8 -0
  112. package/json/test.f.js +61 -0
  113. package/json/tokenizer/module.f.d.ts +8 -0
  114. package/json/tokenizer/module.f.js +52 -0
  115. package/json/tokenizer/test.f.d.ts +6 -0
  116. package/json/tokenizer/test.f.js +419 -0
  117. package/nanvm-lib/tests/test.f.d.ts +27 -0
  118. package/nanvm-lib/tests/test.f.js +84 -0
  119. package/nodejs/version/module.f.d.ts +11 -0
  120. package/nodejs/version/module.f.js +16 -0
  121. package/nodejs/version/test.f.d.ts +2 -0
  122. package/nodejs/version/{test.f.ts → test.f.js} +13 -22
  123. package/package.json +9 -5
  124. package/text/ascii/module.f.d.ts +129 -0
  125. package/text/ascii/module.f.js +148 -0
  126. package/text/ascii/test.f.d.ts +4 -0
  127. package/text/ascii/test.f.js +14 -0
  128. package/text/module.f.d.ts +8 -0
  129. package/text/module.f.js +10 -0
  130. package/text/sgr/module.f.d.ts +8 -0
  131. package/text/sgr/module.f.js +8 -0
  132. package/text/test.f.d.ts +2 -0
  133. package/text/test.f.js +18 -0
  134. package/text/utf16/module.f.d.ts +9 -0
  135. package/text/utf16/module.f.js +66 -0
  136. package/text/utf16/test.f.d.ts +6 -0
  137. package/text/utf16/test.f.js +144 -0
  138. package/text/utf8/module.f.d.ts +6 -0
  139. package/text/utf8/module.f.js +112 -0
  140. package/text/utf8/test.f.d.ts +6 -0
  141. package/text/utf8/test.f.js +175 -0
  142. package/types/array/module.f.d.ts +21 -0
  143. package/types/array/module.f.js +23 -0
  144. package/types/array/test.f.d.ts +10 -0
  145. package/types/array/test.f.js +116 -0
  146. package/types/bigfloat/module.f.d.ts +3 -0
  147. package/types/bigfloat/module.f.js +66 -0
  148. package/types/bigfloat/test.f.d.ts +6 -0
  149. package/types/bigfloat/test.f.js +349 -0
  150. package/types/bigint/module.f.d.ts +54 -0
  151. package/types/bigint/{module.f.ts → module.f.js} +42 -65
  152. package/types/bigint/test.f.d.ts +16 -0
  153. package/types/bigint/test.f.js +199 -0
  154. package/types/bit_vec/module.f.d.ts +134 -0
  155. package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
  156. package/types/bit_vec/test.f.d.ts +22 -0
  157. package/types/bit_vec/test.f.js +210 -0
  158. package/types/btree/find/module.f.d.ts +20 -0
  159. package/types/btree/find/module.f.js +84 -0
  160. package/types/btree/find/test.f.d.ts +2 -0
  161. package/types/btree/find/test.f.js +152 -0
  162. package/types/btree/module.f.d.ts +4 -0
  163. package/types/btree/module.f.js +31 -0
  164. package/types/btree/remove/module.f.d.ts +4 -0
  165. package/types/btree/remove/module.f.js +174 -0
  166. package/types/btree/remove/test.f.d.ts +5 -0
  167. package/types/btree/remove/test.f.js +634 -0
  168. package/types/btree/set/module.f.d.ts +3 -0
  169. package/types/btree/set/module.f.js +103 -0
  170. package/types/btree/set/test.f.d.ts +2 -0
  171. package/types/btree/set/test.f.js +360 -0
  172. package/types/btree/test.f.d.ts +8 -0
  173. package/types/btree/test.f.js +75 -0
  174. package/types/btree/types/module.f.d.ts +11 -0
  175. package/types/btree/types/module.f.js +1 -0
  176. package/types/byte_set/module.f.d.ts +16 -0
  177. package/types/byte_set/module.f.js +28 -0
  178. package/types/byte_set/test.f.d.ts +12 -0
  179. package/types/byte_set/test.f.js +122 -0
  180. package/types/function/compare/module.f.d.ts +10 -0
  181. package/types/function/compare/module.f.js +7 -0
  182. package/types/function/compare/test.f.d.ts +2 -0
  183. package/types/function/compare/test.f.js +8 -0
  184. package/types/function/module.f.d.ts +28 -0
  185. package/types/function/module.f.js +19 -0
  186. package/types/function/operator/module.f.d.ts +20 -0
  187. package/types/function/operator/module.f.js +18 -0
  188. package/types/function/test.f.d.ts +2 -0
  189. package/types/function/test.f.js +12 -0
  190. package/types/list/module.f.d.ts +50 -0
  191. package/types/list/module.f.js +171 -0
  192. package/types/list/test.f.d.ts +22 -0
  193. package/types/list/test.f.js +395 -0
  194. package/types/map/module.f.d.ts +14 -0
  195. package/types/map/module.f.js +31 -0
  196. package/types/map/test.f.d.ts +5 -0
  197. package/types/map/test.f.js +114 -0
  198. package/types/nibble_set/module.f.d.ts +10 -0
  199. package/types/nibble_set/module.f.js +9 -0
  200. package/types/nibble_set/test.f.d.ts +12 -0
  201. package/types/nibble_set/test.f.js +90 -0
  202. package/types/nullable/module.f.d.ts +3 -0
  203. package/types/nullable/module.f.js +2 -0
  204. package/types/nullable/test.f.d.ts +2 -0
  205. package/types/nullable/test.f.js +12 -0
  206. package/types/number/module.f.d.ts +6 -0
  207. package/types/number/module.f.js +8 -0
  208. package/types/number/test.f.d.ts +11 -0
  209. package/types/number/test.f.js +124 -0
  210. package/types/object/module.f.d.ts +10 -0
  211. package/types/object/module.f.js +12 -0
  212. package/types/object/test.f.d.ts +5 -0
  213. package/types/object/test.f.js +17 -0
  214. package/types/range/module.f.d.ts +3 -0
  215. package/types/range/module.f.js +2 -0
  216. package/types/range/test.f.d.ts +2 -0
  217. package/types/range/test.f.js +18 -0
  218. package/types/range_map/module.f.d.ts +14 -0
  219. package/types/range_map/module.f.js +51 -0
  220. package/types/range_map/test.f.d.ts +6 -0
  221. package/types/range_map/test.f.js +176 -0
  222. package/types/result/module.f.d.ts +7 -0
  223. package/types/result/module.f.js +8 -0
  224. package/types/sorted_list/module.f.d.ts +16 -0
  225. package/types/sorted_list/module.f.js +56 -0
  226. package/types/sorted_list/test.f.d.ts +5 -0
  227. package/types/sorted_list/test.f.js +64 -0
  228. package/types/sorted_set/module.f.d.ts +7 -0
  229. package/types/sorted_set/module.f.js +14 -0
  230. package/types/sorted_set/test.f.d.ts +6 -0
  231. package/types/sorted_set/test.f.js +78 -0
  232. package/types/string/module.f.d.ts +6 -0
  233. package/types/string/module.f.js +11 -0
  234. package/types/string/test.f.d.ts +15 -0
  235. package/types/string/test.f.js +58 -0
  236. package/types/string_set/module.f.d.ts +9 -0
  237. package/types/string_set/module.f.js +22 -0
  238. package/types/string_set/test.f.d.ts +5 -0
  239. package/types/string_set/test.f.js +65 -0
  240. package/.github/FUNDING.yml +0 -12
  241. package/.github/dependabot.yml +0 -11
  242. package/.github/workflows/ci.yml +0 -88
  243. package/.github/workflows/npm-publish.yml +0 -53
  244. package/CHANGELOG.md +0 -29
  245. package/Cargo.lock +0 -18
  246. package/Cargo.toml +0 -7
  247. package/com/README.md +0 -3
  248. package/com/cpp/README.md +0 -80
  249. package/com/cpp/module.f.ts +0 -180
  250. package/com/cpp/nanocom.hpp +0 -195
  251. package/com/cpp/testlib.f.ts +0 -8
  252. package/com/cs/module.f.ts +0 -145
  253. package/com/cs/testlib.f.ts +0 -8
  254. package/com/proposals.md +0 -28
  255. package/com/rust/module.f.ts +0 -287
  256. package/com/rust/nanocom/Cargo.lock +0 -7
  257. package/com/rust/nanocom/Cargo.toml +0 -15
  258. package/com/rust/nanocom/README.md +0 -56
  259. package/com/rust/nanocom/src/class.rs +0 -6
  260. package/com/rust/nanocom/src/cobject.rs +0 -90
  261. package/com/rust/nanocom/src/guid.rs +0 -15
  262. package/com/rust/nanocom/src/hresult.rs +0 -7
  263. package/com/rust/nanocom/src/interface.rs +0 -9
  264. package/com/rust/nanocom/src/iunknown.rs +0 -13
  265. package/com/rust/nanocom/src/lib.rs +0 -20
  266. package/com/rust/nanocom/src/object.rs +0 -34
  267. package/com/rust/nanocom/src/ref.rs +0 -57
  268. package/com/rust/nanocom/src/vmt.rs +0 -7
  269. package/com/rust/nanocom/tests/it.rs +0 -186
  270. package/com/rust/nanocom/tests/itmod.rs +0 -195
  271. package/com/rust/testlib.f.ts +0 -8
  272. package/com/test/build.f.ts +0 -111
  273. package/com/test/build.ts +0 -45
  274. package/com/test/cpp/main.cpp +0 -74
  275. package/com/test/cs/Program.cs +0 -31
  276. package/com/test/cs/cs.csproj +0 -16
  277. package/com/test/rust/Cargo.toml +0 -12
  278. package/com/test/rust/src/lib.rs +0 -56
  279. package/com/types/module.f.ts +0 -62
  280. package/commonjs/README.md +0 -94
  281. package/commonjs/build/module.f.ts +0 -100
  282. package/commonjs/build/test.f.ts +0 -107
  283. package/commonjs/module/module.f.ts +0 -41
  284. package/commonjs/module.f.ts +0 -7
  285. package/commonjs/module.ts +0 -31
  286. package/commonjs/package/dependencies/module.f.ts +0 -22
  287. package/commonjs/package/dependencies/test.f.ts +0 -8
  288. package/commonjs/package/module.f.ts +0 -31
  289. package/commonjs/package/test.f.ts +0 -12
  290. package/commonjs/path/README.md +0 -17
  291. package/commonjs/path/module.f.ts +0 -171
  292. package/commonjs/test.ts +0 -64
  293. package/crypto/README.md +0 -3
  294. package/crypto/prime_field/module.f.ts +0 -114
  295. package/crypto/prime_field/test.f.ts +0 -95
  296. package/crypto/secp/module.f.ts +0 -182
  297. package/crypto/secp/test.f.ts +0 -68
  298. package/crypto/sha2/module.f.ts +0 -215
  299. package/crypto/sha2/test.f.ts +0 -83
  300. package/deno.json +0 -71
  301. package/dev/README.md +0 -8
  302. package/dev/index.ts +0 -3
  303. package/dev/module.f.ts +0 -1
  304. package/dev/module.ts +0 -195
  305. package/dev/test/module.f.ts +0 -135
  306. package/dev/test.ts +0 -53
  307. package/djs/README.md +0 -54
  308. package/djs/module.f.ts +0 -76
  309. package/djs/parser/module.f.ts +0 -509
  310. package/djs/parser/test.f.ts +0 -461
  311. package/djs/serializer/module.f.ts +0 -90
  312. package/djs/test.f.ts +0 -67
  313. package/djs/tokenizer/module.f.ts +0 -99
  314. package/djs/tokenizer/test.f.ts +0 -364
  315. package/doc/LANGUAGE.md +0 -255
  316. package/doc/README.md +0 -61
  317. package/doc/byte-code.md +0 -59
  318. package/doc/fa.md +0 -174
  319. package/doc/predefined.md +0 -143
  320. package/doc/proposals.md +0 -21
  321. package/doc/vm/README.md +0 -24
  322. package/doc/vm-rearchitecture.md +0 -129
  323. package/doc/vm.md +0 -150
  324. package/fsc/README.md +0 -111
  325. package/fsc/module.f.ts +0 -122
  326. package/fsc/test.f.ts +0 -21
  327. package/fsm/README.md +0 -113
  328. package/fsm/module.f.ts +0 -107
  329. package/fsm/test.f.ts +0 -139
  330. package/funding.json +0 -61
  331. package/html/README.md +0 -32
  332. package/html/module.f.ts +0 -109
  333. package/html/test.f.ts +0 -37
  334. package/issues/01-test-debug.md +0 -3
  335. package/issues/02-esm.md +0 -8
  336. package/issues/03-djs.md +0 -57
  337. package/issues/05-publish.md +0 -40
  338. package/issues/11-fs-load.md +0 -13
  339. package/issues/17-djs-extension.md +0 -6
  340. package/issues/README.md +0 -42
  341. package/issues/lang/1000-json.md +0 -50
  342. package/issues/lang/2110-default-export.md +0 -11
  343. package/issues/lang/2120-const.md +0 -14
  344. package/issues/lang/2130-default-import.md +0 -10
  345. package/issues/lang/2210-block-comment.md +0 -12
  346. package/issues/lang/2220-namespace-import.md +0 -25
  347. package/issues/lang/2310-undefined.md +0 -7
  348. package/issues/lang/2320-bigint.md +0 -7
  349. package/issues/lang/2330-property-accessor.md +0 -225
  350. package/issues/lang/2340-operators.md +0 -41
  351. package/issues/lang/2350-grouping.md +0 -11
  352. package/issues/lang/2360-built-in.md +0 -81
  353. package/issues/lang/2410-identifier-property.md +0 -9
  354. package/issues/lang/2420-line-comment.md +0 -10
  355. package/issues/lang/2430-trailing-comma.md +0 -13
  356. package/issues/lang/2440-shorthand.md +0 -8
  357. package/issues/lang/2450-destructuring.md +0 -12
  358. package/issues/lang/3110-function.md +0 -35
  359. package/issues/lang/3120-parameters.md +0 -9
  360. package/issues/lang/3130-body-const.md +0 -12
  361. package/issues/lang/3220-let.md +0 -11
  362. package/issues/lang/3240-export.md +0 -44
  363. package/issues/lang/3370-type-inference.md +0 -69
  364. package/issues/lang/3380-promise.md +0 -22
  365. package/issues/lang/3390-class.md +0 -3
  366. package/issues/lang/3410-expression.md +0 -12
  367. package/issues/lang/3420-one-parameter.md +0 -10
  368. package/issues/lang/3430-assignments.md +0 -23
  369. package/issues/lang/README.md +0 -193
  370. package/issues/test.f.ts +0 -58
  371. package/js/tokenizer/module.f.ts +0 -882
  372. package/js/tokenizer/test.f.ts +0 -617
  373. package/json/html/README.md +0 -49
  374. package/json/module.f.ts +0 -94
  375. package/json/parser/module.f.ts +0 -221
  376. package/json/parser/test.f.ts +0 -255
  377. package/json/serializer/module.f.ts +0 -74
  378. package/json/serializer/test.f.ts +0 -64
  379. package/json/test.f.ts +0 -48
  380. package/json/tokenizer/module.f.ts +0 -85
  381. package/json/tokenizer/test.f.ts +0 -290
  382. package/nanvm-lib/Cargo.toml +0 -6
  383. package/nanvm-lib/src/extension.rs +0 -130
  384. package/nanvm-lib/src/interface.rs +0 -133
  385. package/nanvm-lib/src/lib.rs +0 -7
  386. package/nanvm-lib/src/naive.rs +0 -236
  387. package/nanvm-lib/src/nanenum.rs +0 -236
  388. package/nanvm-lib/src/nullish.rs +0 -7
  389. package/nanvm-lib/src/sign.rs +0 -5
  390. package/nanvm-lib/src/simple.rs +0 -32
  391. package/nanvm-lib/tests/test.f.ts +0 -80
  392. package/nanvm-lib/tests/test.rs +0 -108
  393. package/nodejs/version/main.ts +0 -4
  394. package/nodejs/version/module.f.ts +0 -42
  395. package/text/README.md +0 -110
  396. package/text/ascii/module.f.ts +0 -219
  397. package/text/ascii/test.f.ts +0 -14
  398. package/text/module.f.ts +0 -30
  399. package/text/sgr/README.md +0 -3
  400. package/text/sgr/module.f.ts +0 -11
  401. package/text/test.f.ts +0 -19
  402. package/text/utf16/module.f.ts +0 -120
  403. package/text/utf16/test.f.ts +0 -107
  404. package/text/utf8/module.f.ts +0 -116
  405. package/text/utf8/test.f.ts +0 -125
  406. package/tsconfig.json +0 -104
  407. package/types/array/module.f.ts +0 -89
  408. package/types/array/test.f.ts +0 -88
  409. package/types/bigfloat/module.f.ts +0 -93
  410. package/types/bigfloat/test.f.ts +0 -218
  411. package/types/bigint/README.md +0 -35
  412. package/types/bigint/test.f.ts +0 -144
  413. package/types/bit_vec/README.md +0 -18
  414. package/types/bit_vec/test.f.ts +0 -129
  415. package/types/btree/README.md +0 -160
  416. package/types/btree/find/module.f.ts +0 -92
  417. package/types/btree/find/test.f.ts +0 -122
  418. package/types/btree/module.f.ts +0 -35
  419. package/types/btree/remove/module.f.ts +0 -151
  420. package/types/btree/remove/test.f.ts +0 -498
  421. package/types/btree/set/module.f.ts +0 -89
  422. package/types/btree/set/test.f.ts +0 -415
  423. package/types/btree/test.f.ts +0 -92
  424. package/types/btree/types/module.f.ts +0 -27
  425. package/types/byte_set/module.f.ts +0 -73
  426. package/types/byte_set/test.f.ts +0 -84
  427. package/types/function/compare/module.f.ts +0 -26
  428. package/types/function/compare/test.f.ts +0 -7
  429. package/types/function/module.f.ts +0 -43
  430. package/types/function/operator/module.f.ts +0 -65
  431. package/types/function/test.f.ts +0 -20
  432. package/types/list/module.f.ts +0 -350
  433. package/types/list/test.f.ts +0 -327
  434. package/types/map/module.f.ts +0 -65
  435. package/types/map/test.f.ts +0 -76
  436. package/types/nibble_set/module.f.ts +0 -34
  437. package/types/nibble_set/test.f.ts +0 -57
  438. package/types/nullable/module.f.ts +0 -9
  439. package/types/nullable/test.f.ts +0 -9
  440. package/types/number/module.f.ts +0 -20
  441. package/types/number/test.f.ts +0 -194
  442. package/types/object/module.f.ts +0 -30
  443. package/types/object/test.f.ts +0 -14
  444. package/types/range/module.f.ts +0 -10
  445. package/types/range/test.f.ts +0 -9
  446. package/types/range_map/module.f.ts +0 -70
  447. package/types/range_map/test.f.ts +0 -189
  448. package/types/result/module.f.ts +0 -20
  449. package/types/result/module.ts +0 -18
  450. package/types/sorted_list/module.f.ts +0 -83
  451. package/types/sorted_list/test.f.ts +0 -57
  452. package/types/sorted_set/module.f.ts +0 -36
  453. package/types/sorted_set/test.f.ts +0 -67
  454. package/types/string/module.f.ts +0 -26
  455. package/types/string/test.f.ts +0 -43
  456. package/types/string_set/module.f.ts +0 -37
  457. package/types/string_set/test.f.ts +0 -34
@@ -1,498 +0,0 @@
1
- import * as _ from './module.f.ts'
2
- import * as BTree from '../types/module.f.ts'
3
- import * as s from '../set/module.f.ts'
4
- import * as str from '../../string/module.f.ts'
5
- const { cmp } = str
6
- import * as json from '../../../json/module.f.ts'
7
- import * as o from '../../object/module.f.ts'
8
- const { sort } = o
9
-
10
- const set
11
- : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string>
12
- = node => value => s.set(cmp(value))(() => value)(node)
13
-
14
- const remove
15
- : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string> | null
16
- = node => value => _.nodeRemove(cmp(value))(node)
17
-
18
- const jsonStr = json.stringify(sort)
19
-
20
- const test = () => {
21
- let _map
22
- : BTree.TNode<string> | null
23
- = ['1']
24
- for (let i = 2; i <= 38; i++)
25
- _map = set(_map)((i * i).toString())
26
- {
27
- const r = jsonStr(_map)
28
- if (r !==
29
- '[[[[["1"],"100",["1024"]],"1089",[["1156"],"121",["1225"]]],' +
30
- '"1296",' +
31
- '[[["1369"],"144",["1444"]],"16",[["169"],"196",["225"]]]],' +
32
- '"25",' +
33
- '[[[["256"],"289",["324"],"36",["361"]],"4",[["400"],"441",["484"]]],' +
34
- '"49",' +
35
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"9",["900","961"]]]]]'
36
- ) { throw r }
37
- }
38
- {
39
- _map = remove(_map)("0")
40
- if (_map === null) { throw null }
41
- const r = jsonStr(_map)
42
- if (r !==
43
- '[[[[["1"],"100",["1024"]],"1089",[["1156"],"121",["1225"]]],' +
44
- '"1296",' +
45
- '[[["1369"],"144",["1444"]],"16",[["169"],"196",["225"]]]],' +
46
- '"25",' +
47
- '[[[["256"],"289",["324"],"36",["361"]],"4",[["400"],"441",["484"]]],' +
48
- '"49",' +
49
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"9",["900","961"]]]]]'
50
- ) { throw r }
51
- }
52
- {
53
- _map = remove(_map)("1")
54
- if (_map === null) { throw null }
55
- const r = jsonStr(_map)
56
- if (r !==
57
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"]],"16",[["169"],"196",["225"]]],' +
58
- '"25",' +
59
- '[[["256"],"289",["324"],"36",["361"]],"4",[["400"],"441",["484"]]],' +
60
- '"49",' +
61
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"9",["900","961"]]]]'
62
- ) { throw r }
63
- }
64
- {
65
- _map = remove(_map)("4")
66
- if (_map === null) { throw null }
67
- const r = jsonStr(_map)
68
- if (r !==
69
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"]],"16",[["169"],"196",["225"]]],' +
70
- '"25",' +
71
- '[[["256"],"289",["324"]],"36",[["361"],"400",["441","484"]]],' +
72
- '"49",' +
73
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"9",["900","961"]]]]'
74
- ) { throw r }
75
- }
76
- {
77
- _map = remove(_map)("9")
78
- if (_map === null) { throw null }
79
- const r = jsonStr(_map)
80
- if (r !==
81
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"]],"16",[["169"],"196",["225"]]],' +
82
- '"25",' +
83
- '[[["256"],"289",["324"]],"36",[["361"],"400",["441","484"]]],' +
84
- '"49",' +
85
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
86
- ) { throw r }
87
- }
88
- {
89
- _map = remove(_map)("16")
90
- if (_map === null) { throw null }
91
- const r = jsonStr(_map)
92
- if (r !==
93
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]]],' +
94
- '"25",' +
95
- '[[["256"],"289",["324"]],"36",[["361"],"400",["441","484"]]],' +
96
- '"49",' +
97
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
98
- ) { throw r }
99
- }
100
- {
101
- _map = remove(_map)("25")
102
- if (_map === null) { throw null }
103
- const r = jsonStr(_map)
104
- if (r !==
105
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289","324"],"36",["361"],"400",["441","484"]]],' +
106
- '"49",' +
107
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
108
- ) { throw r }
109
- }
110
- {
111
- _map = remove(_map)("36")
112
- if (_map === null) { throw null }
113
- const r = jsonStr(_map)
114
- if (r !==
115
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
116
- '"49",' +
117
- '[[["529"],"576",["625"]],"64",[["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
118
- ) { throw r }
119
- }
120
- {
121
- _map = remove(_map)("49")
122
- if (_map === null) { throw null }
123
- const r = jsonStr(_map)
124
- if (r !==
125
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
126
- '"529",' +
127
- '[[["576","625"],"64",["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
128
- ) { throw r }
129
- }
130
- {
131
- _map = remove(_map)("64")
132
- if (_map === null) { throw null }
133
- const r = jsonStr(_map)
134
- if (r !==
135
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
136
- '"529",' +
137
- '[[["576"],"625",["676"],"729",["784"]],"81",[["841"],"900",["961"]]]]'
138
- ) { throw r }
139
- }
140
- {
141
- _map = remove(_map)("81")
142
- if (_map === null) { throw null }
143
- const r = jsonStr(_map)
144
- if (r !==
145
- '[[[["100","1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
146
- '"529",' +
147
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
148
- ) { throw r }
149
- }
150
- {
151
- _map = remove(_map)("100")
152
- if (_map === null) { throw null }
153
- const r = jsonStr(_map)
154
- if (r !==
155
- '[[[["1024"],"1089",["1156"],"121",["1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
156
- '"529",' +
157
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
158
- ) { throw r }
159
- }
160
- {
161
- _map = remove(_map)("121")
162
- if (_map === null) { throw null }
163
- const r = jsonStr(_map)
164
- if (r !==
165
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369"],"144",["1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
166
- '"529",' +
167
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
168
- ) { throw r }
169
- }
170
- {
171
- _map = remove(_map)("144")
172
- if (_map === null) { throw null }
173
- const r = jsonStr(_map)
174
- if (r !==
175
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"169",["196","225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
176
- '"529",' +
177
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
178
- ) { throw r }
179
- }
180
- {
181
- _map = remove(_map)("169")
182
- if (_map === null) { throw null }
183
- const r = jsonStr(_map)
184
- if (r !==
185
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"196",["225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
186
- '"529",' +
187
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
188
- ) { throw r }
189
- }
190
- {
191
- _map = remove(_map)("196")
192
- if (_map === null) { throw null }
193
- const r = jsonStr(_map)
194
- if (r !==
195
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369"],"1444",["225"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
196
- '"529",' +
197
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
198
- ) { throw r }
199
- }
200
- {
201
- _map = remove(_map)("225")
202
- if (_map === null) { throw null }
203
- const r = jsonStr(_map)
204
- if (r !==
205
- '[[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],"256",[["289"],"324",["361"],"400",["441","484"]]],' +
206
- '"529",' +
207
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
208
- ) { throw r }
209
- }
210
- {
211
- _map = remove(_map)("256")
212
- if (_map === null) { throw null }
213
- const r = jsonStr(_map)
214
- if (r !==
215
- '[[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],"289",[["324","361"],"400",["441","484"]]],' +
216
- '"529",' +
217
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
218
- ) { throw r }
219
- }
220
- {
221
- _map = remove(_map)("289")
222
- if (_map === null) { throw null }
223
- const r = jsonStr(_map)
224
- if (r !==
225
- '[[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],"324",[["361"],"400",["441","484"]]],' +
226
- '"529",' +
227
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
228
- ) { throw r }
229
- }
230
- {
231
- _map = remove(_map)("324")
232
- if (_map === null) { throw null }
233
- const r = jsonStr(_map)
234
- if (r !==
235
- '[[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],"361",[["400"],"441",["484"]]],' +
236
- '"529",' +
237
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
238
- ) { throw r }
239
- }
240
- {
241
- _map = remove(_map)("361")
242
- if (_map === null) { throw null }
243
- const r = jsonStr(_map)
244
- if (r !==
245
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"400",["441","484"]]],' +
246
- '"529",' +
247
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
248
- ) { throw r }
249
- }
250
- {
251
- _map = remove(_map)("400")
252
- if (_map === null) { throw null }
253
- const r = jsonStr(_map)
254
- if (r !==
255
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"441",["484"]]],' +
256
- '"529",' +
257
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
258
- ) { throw r }
259
- }
260
- {
261
- _map = remove(_map)("441")
262
- if (_map === null) { throw null }
263
- const r = jsonStr(_map)
264
- if (r !==
265
- '[[[["1024"],"1089",["1156","1225"]],"1296",[["1369"],"1444",["484"]]],' +
266
- '"529",' +
267
- '[[["576"],"625",["676"]],"729",[["784"],"841",["900","961"]]]]'
268
- ) { throw r }
269
- }
270
- {
271
- _map = remove(_map)("484")
272
- if (_map === null) { throw null }
273
- const r = jsonStr(_map)
274
- if (r !==
275
- '[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],' +
276
- '"529",' +
277
- '[["576"],"625",["676"]],' +
278
- '"729",' +
279
- '[["784"],"841",["900","961"]]]'
280
- ) { throw r }
281
- }
282
- {
283
- _map = remove(_map)("529")
284
- if (_map === null) { throw null }
285
- const r = jsonStr(_map)
286
- if (r !==
287
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"576",["625","676"]],' +
288
- '"729",' +
289
- '[["784"],"841",["900","961"]]]'
290
- ) { throw r }
291
- }
292
- {
293
- _map = remove(_map)("576")
294
- if (_map === null) { throw null }
295
- const r = jsonStr(_map)
296
- if (r !==
297
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"625",["676"]],' +
298
- '"729",' +
299
- '[["784"],"841",["900","961"]]]'
300
- ) { throw r }
301
- }
302
- {
303
- _map = remove(_map)("625")
304
- if (_map === null) { throw null }
305
- const r = jsonStr(_map)
306
- if (r !==
307
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369"],"1444",["676"]],' +
308
- '"729",' +
309
- '[["784"],"841",["900","961"]]]'
310
- ) { throw r }
311
- }
312
- {
313
- _map = remove(_map)("676")
314
- if (_map === null) { throw null }
315
- const r = jsonStr(_map)
316
- if (r !==
317
- '[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],' +
318
- '"729",' +
319
- '[["784"],"841",["900","961"]]]'
320
- ) { throw r }
321
- }
322
- {
323
- _map = remove(_map)("729")
324
- if (_map === null) { throw null }
325
- const r = jsonStr(_map)
326
- if (r !==
327
- '[[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]],' +
328
- '"784",' +
329
- '[["841"],"900",["961"]]]'
330
- ) { throw r }
331
- }
332
- {
333
- _map = remove(_map)("784")
334
- if (_map === null) { throw null }
335
- const r = jsonStr(_map)
336
- if (r !==
337
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"841",["900","961"]]]'
338
- ) { throw r }
339
- }
340
- {
341
- _map = remove(_map)("841")
342
- if (_map === null) { throw null }
343
- const r = jsonStr(_map)
344
- if (r !==
345
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369","1444"],"900",["961"]]]'
346
- ) { throw r }
347
- }
348
- {
349
- _map = remove(_map)("900")
350
- if (_map === null) { throw null }
351
- const r = jsonStr(_map)
352
- if (r !==
353
- '[[["1024"],"1089",["1156","1225"]],"1296",[["1369"],"1444",["961"]]]'
354
- ) { throw r }
355
- }
356
- {
357
- _map = remove(_map)("961")
358
- if (_map === null) { throw null }
359
- const r = jsonStr(_map)
360
- if (r !==
361
- '[["1024"],"1089",["1156","1225"],"1296",["1369","1444"]]'
362
- ) { throw r }
363
- }
364
- {
365
- _map = remove(_map)("1024")
366
- if (_map === null) { throw null }
367
- const r = jsonStr(_map)
368
- if (r !==
369
- '[["1089"],"1156",["1225"],"1296",["1369","1444"]]'
370
- ) { throw r }
371
- }
372
- {
373
- _map = remove(_map)("1089")
374
- if (_map === null) { throw null }
375
- const r = jsonStr(_map)
376
- if (r !==
377
- '[["1156","1225"],"1296",["1369","1444"]]'
378
- ) { throw r }
379
- }
380
- {
381
- _map = remove(_map)("1156")
382
- if (_map === null) { throw null }
383
- const r = jsonStr(_map)
384
- if (r !==
385
- '[["1225"],"1296",["1369","1444"]]'
386
- ) { throw r }
387
- }
388
- {
389
- _map = remove(_map)("1225")
390
- if (_map === null) { throw null }
391
- const r = jsonStr(_map)
392
- if (r !==
393
- '[["1296"],"1369",["1444"]]'
394
- ) { throw r }
395
- }
396
- {
397
- _map = remove(_map)("1296")
398
- if (_map === null) { throw null }
399
- const r = jsonStr(_map)
400
- if (r !==
401
- '["1369","1444"]'
402
- ) { throw r }
403
- }
404
- {
405
- _map = remove(_map)("1369")
406
- if (_map === null) { throw null }
407
- const r = jsonStr(_map)
408
- if (r !== '["1444"]') { throw r }
409
- }
410
- {
411
- _map = remove(_map)("1444")
412
- if (_map !== null) { throw _map }
413
- }
414
- }
415
-
416
- const test2 = () => {
417
- let _map
418
- : BTree.TNode<string>|null
419
- = ['1']
420
- for (let i = 2; i <= 10; i++)
421
- _map = set(_map)((i * i).toString())
422
- if (_map.length !== 3) { throw _map }
423
- let _s = jsonStr(_map)
424
- if (_s !== '[[["1","100"],"16",["25","36"]],"4",[["49"],"64",["81","9"]]]') { throw _s }
425
-
426
- {
427
- _map = remove(_map)("4")
428
- if (_map === null) { throw _map }
429
- _s = jsonStr(_map);
430
- if (_s !== '[[["1","100"],"16",["25","36"]],"49",[["64"],"81",["9"]]]') { throw _s }
431
- }
432
-
433
- {
434
- _map = remove(_map)("49")
435
- if (_map === null) { throw _map }
436
- _s = jsonStr(_map);
437
- if (_s !== '[["1","100"],"16",["25","36"],"64",["81","9"]]') { throw _s }
438
- }
439
-
440
- {
441
- _map = remove(_map)("64")
442
- if (_map === null) { throw _map }
443
- _s = jsonStr(_map);
444
- if (_s !== '[["1","100"],"16",["25","36"],"81",["9"]]') { throw _s }
445
- }
446
-
447
- {
448
- _map = remove(_map)("81")
449
- if (_map === null) { throw _map }
450
- _s = jsonStr(_map);
451
- if (_s !== '[["1","100"],"16",["25"],"36",["9"]]') { throw _s }
452
- }
453
-
454
- {
455
- _map = remove(_map)("36")
456
- if (_map === null) { throw _map }
457
- _s = jsonStr(_map);
458
- if (_s !== '[["1","100"],"16",["25","9"]]') { throw _s }
459
- }
460
-
461
- {
462
- _map = remove(_map)("16")
463
- if (_map === null) { throw _map }
464
- _s = jsonStr(_map);
465
- if (_s !== '[["1","100"],"25",["9"]]') { throw _s }
466
- }
467
-
468
- {
469
- _map = remove(_map)("25")
470
- if (_map === null) { throw _map }
471
- _s = jsonStr(_map);
472
- if (_s !== '[["1"],"100",["9"]]') { throw _s }
473
- }
474
-
475
- {
476
- _map = remove(_map)("100")
477
- if (_map === null) { throw _map }
478
- _s = jsonStr(_map);
479
- if (_s !== '["1","9"]') { throw _s }
480
- }
481
-
482
- {
483
- _map = remove(_map)("9")
484
- if (_map === null) { throw _map }
485
- _s = jsonStr(_map);
486
- if (_s !== '["1"]') { throw _s }
487
- }
488
-
489
- {
490
- _map = remove(_map)("1")
491
- if (_map !== null) { throw _map }
492
- }
493
- }
494
-
495
- export default {
496
- test,
497
- test2,
498
- }
@@ -1,89 +0,0 @@
1
- import * as _ from '../types/module.f.ts'
2
- import * as btreeFind from '../find/module.f.ts'
3
- const { find } = btreeFind
4
- import * as Cmp from '../../function/compare/module.f.ts'
5
- import * as list from '../../list/module.f.ts'
6
- const { fold } = list
7
-
8
- type Branch1To3<T> = _.Branch1<T> | _.Branch3<T>
9
-
10
- const b57
11
- : <T>(b: _.Branch5<T> | _.Branch7<T>) => Branch1To3<T>
12
- = b => b.length === 5 ? [b] : [[b[0], b[1], b[2]], b[3], [b[4], b[5], b[6]]]
13
-
14
- const reduceOp
15
- : <T>(i: btreeFind.PathItem<T>) => (a: Branch1To3<T>) => Branch1To3<T>
16
- = ([i, x]) => a => {
17
- switch (i) {
18
- case 0: {
19
- switch (x.length) {
20
- case 3: { return [[...a, x[1], x[2]]] }
21
- case 5: { return b57([...a, x[1], x[2], x[3], x[4]]) }
22
- }
23
- }
24
- case 2: {
25
- switch (x.length) {
26
- case 3: { return [[x[0], x[1], ...a]] }
27
- case 5: { return b57([x[0], x[1], ...a, x[3], x[4]]) }
28
- }
29
- }
30
- case 4: {
31
- return b57([x[0], x[1], x[2], x[3], ...a])
32
- }
33
- }
34
- }
35
-
36
- const reduceBranch = fold(reduceOp)
37
-
38
- const nodeSet
39
- = <T>(c: Cmp.Compare<T>) => (g: (value: T | null) => T) => (node: _.TNode<T>): _.TNode<T> => {
40
- const { first, tail } = find(c)(node)
41
- const [i, x] = first;
42
- const f = (): Branch1To3<T> => {
43
- switch (i) {
44
- case 0: {
45
- // insert
46
- const value = g(null)
47
- switch (x.length) {
48
- case 1: { return [[value, x[0]]] }
49
- case 2: { return [[value], x[0], [x[1]]] }
50
- }
51
- }
52
- case 1: {
53
- // replace
54
- switch (x.length) {
55
- case 1: { return [[g(x[0])]] }
56
- case 2: { return [[g(x[0]), x[1]]] }
57
- case 3: { return [[x[0], g(x[1]), x[2]]] }
58
- case 5: { return [[x[0], g(x[1]), x[2], x[3], x[4]]] }
59
- }
60
- }
61
- case 2: {
62
- // insert
63
- const value = g(null)
64
- switch (x.length) {
65
- case 1: { return [[x[0], value]] }
66
- case 2: { return [[x[0]], value, [x[1]]] }
67
- }
68
- }
69
- case 3: {
70
- // replace
71
- switch (x.length) {
72
- case 2: { return [[x[0], g(x[1])]] }
73
- case 5: { return [[x[0], x[1], x[2], g(x[3]), x[4]]]}
74
- }
75
- }
76
- case 4: {
77
- // insert
78
- const [v0, v1] = x;
79
- return [[v0], v1, [g(null)]]
80
- }
81
- }
82
- }
83
- const r = reduceBranch(f())(tail)
84
- return r.length === 1 ? r[0] : r
85
- }
86
-
87
- export const set
88
- : <T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.TNode<T>
89
- = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)