functionalscript 0.3.4 → 0.3.5

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
package/doc/LANGUAGE.md DELETED
@@ -1,255 +0,0 @@
1
- # FunctionalScript Programming Language
2
-
3
- Principles:
4
-
5
- - FunctionalScript VM should behaves the same way as a JavaScript VM,
6
- - Any unsupported feature should be reported at compile-time.
7
-
8
- ## 1. Module Ecosystem
9
-
10
- FunctionalScript uses ESM conventions as a module ecosystem. For example,
11
-
12
- ```js
13
- import thirdPartyModule from 'third-party-package/module'
14
-
15
- const result = thirdPartyModule.someFunction('hello')
16
- ```
17
-
18
- ## 2. Packages
19
-
20
- FunctionalScript uses a `package.json` file to define a package. This file is compatible with [Node.js `package.json`](https://nodejs.org/en/knowledge/getting-started/npm/what-is-the-file-package-json/).
21
- The preferred way to reference dependencies is to use a GitHub URL. These dependencies in a `package.json` file could look like this,
22
-
23
- ```json
24
- {
25
- // ...
26
- "dependencies": {
27
- "third-party-package": "github:exampleorg/thirdpartypackage"
28
- }
29
- // ...
30
- }
31
- ```
32
-
33
- **Note:** this repository is also a FunctionalScript package, and it can be used as a library. To install this package, use
34
-
35
- ```
36
- npm install -S github:functionalscript/functionalscript
37
- ```
38
-
39
- ## 3. Module Structure
40
-
41
- A module is a file with the `.js` extension. It contains three parts: references to other modules, definitions, and exports. For example
42
-
43
- `./first.f.mjs`
44
- ```js
45
- // 1. references
46
- import math from 'math'
47
-
48
- // 2. definitions
49
- const myConst = 42
50
- // addition(a)(b) = a + b
51
- const addition = a => b => a + b
52
- const add42 = addition(42)
53
- const _10digitsOfPi = math.calculatePi(10)
54
-
55
- // 3. exports
56
- export default {
57
- addition,
58
- add42,
59
- _10digitsOfPi,
60
- }
61
- ```
62
-
63
- `./second.f.mjs`
64
- ```js
65
- // 1. references
66
- import first from './first.f.mjs'
67
-
68
- // 2. definitions
69
- const _42plus7 = first.add42(7)
70
-
71
- // 3. exports
72
- export default {
73
- _42plus7,
74
- }
75
- ```
76
-
77
- ## 4. References To Other Modules
78
-
79
- The format of references is `import ANYNAME from 'PATH_TO_A_MODULE'`. For example,
80
-
81
- ```js
82
- import math from 'math'
83
- import algebra from 'math/algebra'
84
- import localFile from '../some-directory/some-file.f.mjs'
85
- ```
86
-
87
- ## 5. Definitions
88
-
89
- The format of definitions is `const NAME = EXPRESSION`, where the `EXPRESSION` is a subset of [JavaScript expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators).
90
-
91
- ```js
92
- const myConst = 42
93
- const functionDouble = a => a * 2
94
- const structure = { name: "John", surname: "Smith" }
95
- const array = [1, 2, 3]
96
- const nestedStructure = {
97
- address: null,
98
- serialNumber: "123-45-78",
99
- sum: 14 + myConst + functionDouble(4),
100
- moreInfo: {
101
- name: "Ivan",
102
- surname: "Terrible",
103
- }
104
- }
105
- ```
106
-
107
- See [Expressions](#7-Expressions).
108
-
109
- ### 6. Exports
110
-
111
- The format of exports is `export default { A_LIST_OF_EXPORTED_DEFINITIONS }`. There should be only one `export default` at
112
- the end of a FunctionalScript file. For example,
113
-
114
- ```js
115
- export default {
116
- nestedStructure,
117
- array,
118
- structure,
119
- }
120
- ```
121
-
122
- ## 7. Expressions
123
-
124
- Expressions could fall under these categories:
125
-
126
- - Literals:
127
- - Number Literals, e.g. `0`, `3.14`, `4e8`
128
- - Boolean Literals: `true` or `false`
129
- - A `null` Literal
130
- - An `undefined` Literal
131
- - String Literals, e.g. `"Hello world!"`
132
- - Complex Structures
133
- - Arrays, e.g. `[2, 5]`
134
- - Objects, e.g. `{ a: "Hello", b: "world!" }`
135
- - Arrow functions, e.g. `x => x * 2`
136
- - Operators
137
- - Comparison Operators: `===`, `!==`, `>`, `>=`, `<`, `<=`
138
- - Arithmetic Operators: `+`, `-`, `*`, `/`, `%`, `**`
139
- - Bitwise Operators: `&`, `|`, `^`, `~`, `<<`, `>>`, `>>>`
140
- - Logical Operators: `&&`, `||`, `!`, `??`
141
- - Conditional Operator, e.g. `condition ? val1 : val2`
142
- - Template Literals, e.g. `string ${expression}`
143
- - `typeof`
144
- - Relations Operators: `in`, `instanceof`.
145
- - Member Operators: `.`, `[]`.
146
-
147
- **Note:** the `.` member operator has prohibited property names, such as `constructor` and `push`. To access such properties, it's recommended to use the
148
- [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor) function.
149
- `[]` accepts only numbers. For example `+'0'`
150
-
151
- ## 8. Arrow Functions
152
-
153
- An arrow function is also known as [a lambda function](https://en.wikipedia.org/wiki/Anonymous_function).
154
- The format of an arrow function is `ARGUMENT_NAME => FUNCTION_BODY`. An arrow function must have either a single argument or no arguments at all. For example
155
-
156
- ```js
157
- x => x * 2
158
- a => a + 4
159
- s => `template literal ${s}`
160
- a => b => a + b // an arrow functions that returns another arrow functions.
161
- () => 'hello' // an arrow function with no arguments
162
- ```
163
-
164
- A function body is either an expression or a block statement. A block statement format is `{ A_LIST_OF_STATEMENTS }`. For example
165
-
166
- ```js
167
- // a function with one argument and a block statement
168
- const f = x => {
169
- const a = 2 + x
170
- const r = a + 4
171
- return r
172
- }
173
- ```
174
-
175
- ## 9. Statements
176
-
177
- `{ A_LIST_OF_STATEMENTS }` is one or many statements separated by the newline control character. One of these statements mentioned earlier was [definition](#5-Definitions), also known as a [const](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) statement. The other statements are described below.
178
-
179
- ### 9.1. Let
180
-
181
- [Let](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) declares a local mutable alias for immutable objects. For example
182
-
183
- ```js
184
- let x = [5]
185
- // you can assign another immutable object to the alias at any time.
186
- x = [3, 4]
187
- //but you can't change the properties of the immutable object.
188
- x[0] = 3 // < invalid
189
- //let aliases can not be referenced from another arrow function.
190
- const f = () => x // < invalid
191
- ```
192
-
193
- ### 9.2. Return
194
-
195
- [Return](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return)
196
-
197
- ### 9.3. If...Else
198
-
199
- [If...Else](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else)
200
-
201
- ### 9.4. Switch
202
-
203
- [Switch](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)
204
-
205
- ### 9.5. Throw
206
-
207
- [Throw](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw). FunctionalScript allows to throw exceptions, but the language has no syntax to catch them. Developers should only use the 'throw' statement in non-recoverable situations. Throwing an exception could be compared to [panic in Rust](https://doc.rust-lang.org/std/macro.panic.html).
208
-
209
- ### 9.6. While
210
-
211
- [While](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while)
212
-
213
- ### 9.7. Block
214
-
215
- [Block](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/block)
216
-
217
- ## 10. Generators
218
-
219
- For compatibility reason, FunctionalScript allows to create generators as implementation of `[Symbol.iterator]` function. However, it doesn't allow to read the `[Symbol.iterator]` property. For example
220
-
221
- This code is allowed
222
-
223
- ```js
224
- /** @type {<T>(list: List<T>) => Iterable<T>} */
225
- const iterable = list => ({
226
- *[Symbol.iterator]() {
227
- let i = list
228
- while (true) {
229
- const r = next(i)
230
- if (r === null) { return }
231
- yield r.first
232
- i = r.tail
233
- }
234
- }
235
- })
236
- ```
237
-
238
- The following code is not allowed, because `iterator` is a mutated object by design in JavaScript.
239
-
240
- ```js
241
- const it = [0, 1, 2][Symbol.iterator] //< compilation error.
242
- ```
243
-
244
- Use `Iterable` instead of `Iterator`.
245
-
246
- ```js
247
- const x = () => {
248
- const a = [0, 1, 2] // iterable
249
- let sum = 0;
250
- for (let i in a) {
251
- sum = sum + i
252
- }
253
- return sum;
254
- }
255
- ```
package/doc/README.md DELETED
@@ -1,61 +0,0 @@
1
- # Documentation
2
-
3
- FunctionalScript files have `.f.mjs` file extensions because it's using the ES module system.
4
-
5
- ## 1. Language
6
-
7
- ### 1.1. Exports
8
-
9
- ```js
10
- export default 'Hello world!'
11
- ```
12
-
13
- ```js
14
- export default { a: 'hello', b: 42 }
15
- ```
16
-
17
- ```js
18
- export default x => x * x
19
- ```
20
-
21
- ### 1.2. Reference Another Module
22
-
23
- #### 1.2.1. Local File
24
-
25
- ```js
26
- import x from './folder/main.f.mjs'
27
- ```
28
-
29
- ### 1.2.2. External Module
30
-
31
- Run `npm install -D github:USER/REPO`
32
-
33
- ```js
34
- import x from `REPO/DIR/FILE.f.mjs`
35
- ```
36
-
37
- ### 1.3. Functions
38
-
39
- ```js
40
- const f = x => x * x
41
- const fResult = f(42)
42
-
43
- const plus = a => b => a + b
44
- const plusResult = plus(a)(b)
45
-
46
- const sum = ar => ar.reduce((a, i) => a + i, 0)
47
- const sumResult = sum([1, 2, 3])
48
- ```
49
-
50
- ## 2. Advanced
51
-
52
- ### 2.1. Generators
53
-
54
- ```js
55
- const range5 = {*[System.iterator]() {
56
- yield 0
57
- yield 1
58
- yield 2
59
- yield 3
60
- }}
61
- ```
package/doc/byte-code.md DELETED
@@ -1,59 +0,0 @@
1
- # Byte Code
2
-
3
- This format is designed for fast and straightforward serialization and doesn't depend on a particular VM implementation.
4
-
5
- **Requirements:**
6
- - VM serializer/deserializer should be very simple.
7
- - string: UTF16
8
- - number: in a binary format
9
- - bigint: in a binary format
10
- - len: u32
11
- - the byte code doesn't know anything about importing modules or I/O functions.
12
- - the byte code shouldn't contain syntax sugar.
13
- - serialized in a byte array so we can save it into a file. One byte is one unit.
14
- - least-significant byte first.
15
-
16
- ```rust
17
- struct Array<T> {
18
- len: u32,
19
- array: [T; self.len],
20
- }
21
-
22
- type String = Array<u16>;
23
-
24
- // LSB first.
25
- type BigUInt = Array<u64>;
26
-
27
- type Object = Array<(String, Any)>;
28
-
29
- // This is the main structure for serialization.
30
- type Code = Array<u8>;
31
-
32
- struct Function {
33
- length: u32
34
- code: Code
35
- }
36
-
37
- // This structure is not for serialization because
38
- // a serialized module should resolve all imports.
39
- struct Module {
40
- import: Array<String>
41
- code: Code
42
- }
43
- ```
44
-
45
- |format|any |Tag| |
46
- |------|---------------|---|-----------------------|
47
- |JSON |null | 00| |
48
- | |number | 01|u64 |
49
- | |false | 02| |
50
- | |true | 03| |
51
- | |string | 04|String |
52
- | |object | 05|Object |
53
- | |array | 06|Array<Any> |
54
- |DJS |ref | 07|u32 |
55
- | |positive_bigint| 08|BigUInt |
56
- | |negative_bigint| 09|BigUInt |
57
- |FJS |function | 0A|Function |
58
- | |arg_ref | 0B|u32 |
59
- | |undefined | 0C| |
package/doc/fa.md DELETED
@@ -1,174 +0,0 @@
1
- # FA
2
-
3
- ```
4
- F ::= A 'hello'
5
- F ::= A 'help'
6
- ```
7
-
8
- ## Classic FA
9
-
10
- ```
11
- S0 ::= A 'h'
12
- S1 ::= S0 'e'
13
- S2 ::= S1 'l'
14
- S3 ::= S2 'l'
15
- F ::= S3 'o'
16
-
17
- X0 ::= A 'h'
18
- X1 ::= X0 'e'
19
- X2 ::= X1 'l'
20
- F ::= X2 'p'
21
- ```
22
-
23
- ## DFA
24
-
25
- ```
26
- {S0,X0} = A 'h'
27
- {S1,X1} ::= {S0,X0} 'e'
28
- {S2,X2} ::= {S1,X1} 'l'
29
- S3 ::= {S2,X2} 'l'
30
- F ::= {S2,X2} 'p'
31
- F ::= S3 'o'
32
-
33
- P0 = A 'h'
34
- P1 ::= P0 'e'
35
- P2 ::= P1 'l'
36
- S3 ::= P2 'l'
37
- F ::= P2 'p'
38
- F ::= S3 'o'
39
- ```
40
-
41
- ## Tokenizer FA
42
-
43
- ```
44
- T ::= I 'true' // T0, T1, T2
45
- F ::= I 'false' // F0, F2, F2, F3
46
- N ::= I 'null' // N0, N1, N2
47
- Id ::= I letter
48
- Id ::= Id letter
49
- Id ::= Id digit
50
- ```
51
-
52
- ## Tokenizer DFA
53
-
54
- ```
55
- {T0,Id} = I 't'
56
- {T1,Id} = {T0,Id} 'r'
57
- Id = {T0,Id} letter(except 'r')
58
- Id = {T0,Id} digit
59
-
60
- {a..b}{c..d}{e..f}
61
- ```
62
-
63
- ```js
64
- const t0 = [[init, one('t')]]
65
- const t1 = [[t0, one('r')]]
66
- const t2 = [[t1, one('u')]]
67
- const t = [[t2, one('e')]]
68
-
69
- const id = [
70
- [init, letter]
71
- [() => id, letter]
72
- [() => id, digit]
73
- ]
74
-
75
- const dfa = ([t, f, n, id]) => ?
76
- ```
77
-
78
- ## Set
79
-
80
- ```js
81
- const letter = byteSet(['_', '$', ['a', 'z'], ['A', 'Z']])
82
- ```
83
-
84
- Letters and digits
85
-
86
- | | |
87
- |------|------------|
88
- |`$` |`0x24` |
89
- |`0..9`|`0x30..0x39`|
90
- |`A..Z`|`0x41..0x5A`|
91
- |`_` |`0x5F` |
92
- |`a..z`|`0x61..0x7A`|
93
-
94
- ## Bit set
95
-
96
- For a byte, it is an array of 8 uint32, bigint (0..2^256-1), or string of 16 characters.
97
-
98
- ### 16 bit set.
99
-
100
- It can use an intermediate state.
101
-
102
- | | | |
103
- |---|-------|--------|
104
- |`2`|`4` |`$` |
105
- |`3`|`..9` |`0..9` |
106
- |`4`|`1..` |`A..O` |
107
- |`5`|`..A,F`|`P..Z,_`|
108
- |`6`|`1..` |`a..o` |
109
- |`7`|`..A` |`p..z` |
110
-
111
- ```js
112
- const init = [
113
- _, _, i2, _,
114
- i4, i5, i4, i7,
115
- _, _, _, _,
116
- _, _, _, _]
117
-
118
- const i2 = [
119
- _, _, _, _,
120
- id, _, _, _,
121
- _, _, _, _,
122
- _, _, _, _]
123
-
124
- const i3 = [
125
- id, id, id, id,
126
- id, id, id, id,
127
- id, id, _, _,
128
- _, _, _, _]
129
-
130
- const i4 = [
131
- _, id, id, id,
132
- id, id, id, id,
133
- id, id, id, id,
134
- id, id, id, id]
135
-
136
- const i5 = [
137
- id, id, id, id,
138
- id, id, id, id,
139
- id, id, id, _,
140
- _, _, _, id]
141
-
142
- const i7 = [
143
- id, id, id, id,
144
- id, id, id, id,
145
- id, id, id, _,
146
- _, _, _, _]
147
-
148
- const id = [
149
- _, _, i2, i3,
150
- i4, i5, i4, i7,
151
- _, _, _, _,
152
- _, _, _, _]
153
- ```
154
-
155
- ```js
156
- const init =
157
- 000_000_001_000
158
- 010_011_100_101
159
- 000_000_000_000
160
- 000_000_000_000
161
-
162
- const i = [
163
- // 1
164
- 0000_1000_0000_0000,
165
- // 2
166
- 1111_1111_1100_0000,
167
- // 3
168
- 0111_1111_1111_1111,
169
- // 4
170
- 1111_1111_1110_0001,
171
- // 5
172
- 1111_1111_1110_0000,
173
- ]
174
- ```
package/doc/predefined.md DELETED
@@ -1,143 +0,0 @@
1
- # Predefined Object And Properties
2
-
3
- ## Global Objects
4
-
5
- Global objects. Global objects can't be assigned to something `const r = Object`. They can only be used as namespaces `Object.getOwnProperties()`.
6
-
7
- ### Value properties
8
-
9
- - [x] `Infinity`
10
- - [x] `NaN`
11
- - [ ] `undefined`
12
- - [ ] `globalThis`
13
-
14
- ### Function properties
15
-
16
- - [ ] `eval`
17
- - [x] `isFinite()`
18
- - [x] `isNan()`
19
- - [x] `parseFloat()`
20
- - [x] `parseInt()`
21
- - [ ] `encodeURI()`
22
- - [ ] `encodeURIComponent()`
23
- - [ ] `decodeURI()`
24
- - [ ] `decodeURIComponent()`
25
-
26
- ### Fundamental objects
27
-
28
- - [x] `Object`. For example `Object.entries`, `Object.fromEntries`.
29
- - [ ] `Function`
30
- - [ ] `Boolean`
31
- - [ ] `Symbol`
32
-
33
- ### Error objects
34
-
35
- - [ ] `Number`
36
- - [ ] `BigInt`
37
- - [ ] `Math`
38
- - [ ] `Date`
39
-
40
- ### Text processing
41
-
42
- - [ ] `String`
43
- - [ ] `RegExp`
44
-
45
- ### Indexed collections:
46
-
47
- - [x] `Array`. For example `x instanceof Array`
48
- - [ ] `Int8Array`
49
- - [ ] `UInt8Array`
50
- - [ ] `UInt8ClampedArray`
51
- - [ ] `Int16Array`
52
- - [ ] `UInt16Array`
53
- - [ ] `Int32Array`
54
- - [ ] `UInt32Array`
55
- - [ ] `Float32Array`
56
- - [ ] `Float64Array`
57
- - [ ] `BigInt64Array`
58
- - [ ] `BigUint64Array`
59
-
60
- ### Keyed collections:
61
-
62
- - [ ] `Map`
63
- - [ ] `Set`
64
- - [ ] `WeakMap`
65
- - [ ] `WeakSet`
66
-
67
- ### Structured data:
68
-
69
- - [ ] `ArrayBuffer`
70
- - [ ] `SharedArrayBuffer`
71
- - [ ] `Atomics`
72
- - [ ] `DataView`
73
- - [x] `JSON`. For example `JSON.stringify`
74
-
75
- ### Control abstraction objects
76
-
77
- - [ ] `Promise`
78
- - [ ] `Generator`
79
- - [ ] `GeneratorFunction`
80
- - [ ] `AsyncFunction`
81
- - [ ] `AsyncGeneratorFunction`
82
-
83
- ### Reflection
84
-
85
- - [ ] `Reflect`
86
- - [ ] `Proxy`
87
-
88
- ### Internalization
89
-
90
- - [ ] `Intl`
91
-
92
- ### WebAssembly
93
-
94
- - [ ] `WebAssembly`
95
- - [ ] `WebAssembly.Module`
96
- - [ ] `WebAssembly.Instance`
97
- - [ ] `WebAssembly.Memory`
98
- - [ ] `WebAssembly.Table`
99
- - [ ] `WebAssembly.CompileError`
100
- - [ ] `WebAssembly.LinkError`
101
- - [ ] `WebAssembly.RuntimeError`
102
-
103
- ## Prohibited Properties
104
-
105
- Allowed types:
106
-
107
- - object `{}`
108
- - `null` has no properties
109
- - array `[]`
110
- - number `-3`
111
- - bigint `42n`
112
- - string `"xx"`
113
- - boolean `true`
114
- - function `x => x * x`
115
- - `undefined` has no properties
116
-
117
- ### Object
118
-
119
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
120
-
121
- - [ ] ! `constructor`. The property can create a new function. For example
122
- ```js
123
- const f = (() => null).constructor('a', 'return a * a')
124
- ```
125
- - [ ] deprecated `__proto__`
126
- - [ ] ! deprecated `__defineGetter__`. The property can mutate an object.
127
- - [ ] ! deprecated `__defineSetter__`. The property can mutate an object.
128
- - [ ] deprecated `__lookupGetter__`
129
- - [ ] deprecated `__lookupSetter__`
130
-
131
- ### Array
132
-
133
- These properties can mutate an array:
134
-
135
- - [ ] ! `copyWithin`.
136
- - [ ] ! `fill`
137
- - [ ] ! `pop`
138
- - [ ] ! `push`
139
- - [ ] ! `reverse`
140
- - [ ] ! `shift`
141
- - [ ] ! `sort`
142
- - [ ] ! `splice`
143
- - [ ] ! `unshift`
package/doc/proposals.md DELETED
@@ -1,21 +0,0 @@
1
- # ECMAScripts Proposals
2
-
3
- ECMAScript proposals that may affect FunctionalScript
4
-
5
- - Type Annotations: https://github.com/tc39/proposal-type-annotations
6
- ```js
7
- const add = (a: bigint) => (b: bigint) => a + b
8
- ```
9
- - Deeply Immutable Record and Tuples: https://github.com/tc39/proposal-record-tuple
10
- ```js
11
- const r = #{ x: 4, y: "s" }
12
- const t = #[5, "hello"]
13
- ```
14
- Because these types are deeply immutable and the equality operator '===' works as deep equality, it's a good candidate for content-addressable type system.
15
- - Pipeline operator https://github.com/tc39/proposal-pipeline-operator
16
- ```js
17
- const double = a => a + a
18
- const munis1 = a => a - 1
19
- const f = a => a |> double(%) |> minus1(%)
20
- ```
21
- I, Sergey, still prefer F# pipeline operator and strongly believe that it's possible to have both syntax in the language.