functionalscript 0.1.608 → 0.2.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 (222) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/Cargo.lock +4 -0
  3. package/Cargo.toml +4 -2
  4. package/README.md +1 -1
  5. package/com/cpp/module.f.d.mts +4 -8
  6. package/com/cpp/module.f.mjs +20 -25
  7. package/com/cpp/testlib.f.mjs +3 -4
  8. package/com/cs/module.f.d.mts +4 -8
  9. package/com/cs/module.f.mjs +18 -23
  10. package/com/cs/testlib.f.mjs +3 -5
  11. package/com/rust/module.f.d.mts +3 -7
  12. package/com/rust/module.f.mjs +25 -30
  13. package/com/rust/nanocom/src/cobject.rs +1 -1
  14. package/com/rust/testlib.f.mjs +3 -5
  15. package/com/test/build.f.d.mts +2 -2
  16. package/com/test/build.f.mjs +2 -2
  17. package/com/test/build.mjs +4 -4
  18. package/com/test/rust/src/lib.rs +4 -4
  19. package/com/types/module.f.d.mts +5 -10
  20. package/com/types/module.f.mjs +5 -12
  21. package/commonjs/build/module.f.d.mts +13 -17
  22. package/commonjs/build/module.f.mjs +23 -28
  23. package/commonjs/build/test.f.mjs +4 -4
  24. package/commonjs/module/function/module.f.d.mts +0 -2
  25. package/commonjs/module/function/module.f.mjs +0 -2
  26. package/commonjs/module/module.f.d.mts +16 -21
  27. package/commonjs/module/module.f.mjs +2 -9
  28. package/commonjs/module.d.mts +1 -5
  29. package/commonjs/module.f.d.mts +0 -2
  30. package/commonjs/module.f.mjs +0 -2
  31. package/commonjs/module.mjs +2 -7
  32. package/commonjs/package/dependencies/module.f.d.mts +3 -7
  33. package/commonjs/package/dependencies/module.f.mjs +5 -10
  34. package/commonjs/package/dependencies/test.f.mjs +1 -1
  35. package/commonjs/package/module.f.d.mts +12 -18
  36. package/commonjs/package/module.f.mjs +6 -13
  37. package/commonjs/package/test.f.mjs +1 -1
  38. package/commonjs/path/module.f.d.mts +25 -32
  39. package/commonjs/path/module.f.mjs +12 -23
  40. package/commonjs/path/test.f.mjs +11 -11
  41. package/commonjs/test.mjs +1 -1
  42. package/dev/module.f.d.mts +1 -4
  43. package/dev/module.f.mjs +1 -4
  44. package/dev/module.mjs +1 -1
  45. package/dev/test/module.f.d.mts +2 -3
  46. package/dev/test/module.f.mjs +5 -7
  47. package/djs/module.f.d.mts +13 -18
  48. package/djs/module.f.mjs +12 -19
  49. package/djs/parser/module.f.d.mts +53 -37
  50. package/djs/parser/module.f.mjs +278 -131
  51. package/djs/parser/test.f.d.mts +4 -0
  52. package/djs/parser/test.f.mjs +186 -70
  53. package/djs/test.f.mjs +4 -4
  54. package/djs/tokenizer/module.f.d.mts +6 -10
  55. package/djs/tokenizer/module.f.mjs +19 -22
  56. package/djs/tokenizer/test.f.mjs +7 -7
  57. package/doc/LANGUAGE.md +17 -16
  58. package/doc/README.md +14 -50
  59. package/fsc/README.md +0 -3
  60. package/fsc/module.f.d.mts +4 -9
  61. package/fsc/module.f.mjs +17 -24
  62. package/fsc/test.f.mjs +3 -3
  63. package/fsm/README.md +1 -1
  64. package/fsm/module.f.d.mts +13 -20
  65. package/fsm/module.f.mjs +27 -38
  66. package/fsm/test.f.mjs +8 -8
  67. package/html/README.md +24 -0
  68. package/html/module.f.d.mts +7 -12
  69. package/html/module.f.mjs +14 -23
  70. package/html/test.f.mjs +4 -4
  71. package/issues/01-test-debug.md +3 -0
  72. package/issues/{publish.md → 05-publish.md} +8 -8
  73. package/issues/17-djs-extension.md +6 -0
  74. package/issues/README.md +20 -13
  75. package/issues/lang/1000-json.md +38 -0
  76. package/issues/lang/2110-default-export.md +2 -2
  77. package/issues/lang/2310-undefined.md +1 -1
  78. package/issues/lang/2330-property-accessor.md +225 -0
  79. package/issues/lang/2360-built-in.md +54 -47
  80. package/issues/lang/3240-export.md +44 -0
  81. package/issues/lang/README.md +64 -22
  82. package/issues/test.f.d.mts +16 -0
  83. package/issues/test.f.mjs +57 -0
  84. package/js/tokenizer/module.f.d.mts +18 -17
  85. package/js/tokenizer/module.f.mjs +80 -61
  86. package/js/tokenizer/test.f.mjs +15 -12
  87. package/json/module.f.d.mts +18 -26
  88. package/json/module.f.mjs +18 -31
  89. package/json/parser/module.f.d.mts +9 -13
  90. package/json/parser/module.f.mjs +9 -14
  91. package/json/parser/test.f.mjs +7 -7
  92. package/json/serializer/module.f.d.mts +11 -20
  93. package/json/serializer/module.f.mjs +14 -29
  94. package/json/serializer/test.f.mjs +2 -2
  95. package/json/test.f.mjs +3 -3
  96. package/json/tokenizer/module.f.d.mts +6 -10
  97. package/json/tokenizer/module.f.mjs +16 -20
  98. package/json/tokenizer/test.f.mjs +6 -6
  99. package/jsr.json +1 -1
  100. package/nanvm-lib/Cargo.toml +6 -0
  101. package/nanvm-lib/src/extension.rs +119 -0
  102. package/nanvm-lib/src/interface.rs +136 -0
  103. package/nanvm-lib/src/lib.rs +7 -0
  104. package/nanvm-lib/src/naive.rs +229 -0
  105. package/nanvm-lib/src/nanenum.rs +230 -0
  106. package/nanvm-lib/src/nullish.rs +7 -0
  107. package/nanvm-lib/src/sign.rs +5 -0
  108. package/nanvm-lib/src/simple.rs +32 -0
  109. package/nanvm-lib/tests/test.f.d.mts +36 -0
  110. package/nanvm-lib/tests/test.f.mjs +79 -0
  111. package/nanvm-lib/tests/test.rs +108 -0
  112. package/nodejs/version/main.mjs +1 -1
  113. package/nodejs/version/module.f.d.mts +4 -9
  114. package/nodejs/version/module.f.mjs +2 -7
  115. package/nodejs/version/test.f.mjs +3 -3
  116. package/package.json +1 -1
  117. package/prime_field/module.f.d.mts +20 -23
  118. package/prime_field/module.f.mjs +9 -12
  119. package/prime_field/test.f.mjs +1 -1
  120. package/secp/module.f.d.mts +27 -28
  121. package/secp/module.f.mjs +38 -39
  122. package/secp/test.f.mjs +4 -4
  123. package/sha2/module.f.d.mts +8 -16
  124. package/sha2/module.f.mjs +7 -20
  125. package/sha2/test.f.mjs +4 -4
  126. package/text/README.md +2 -2
  127. package/text/ascii/module.f.d.mts +69 -72
  128. package/text/ascii/module.f.mjs +5 -10
  129. package/text/ascii/test.f.mjs +3 -3
  130. package/text/module.f.d.mts +9 -14
  131. package/text/module.f.mjs +7 -14
  132. package/text/sgr/module.f.d.mts +7 -9
  133. package/text/sgr/module.f.mjs +2 -4
  134. package/text/test.f.mjs +3 -3
  135. package/text/utf16/module.f.d.mts +8 -15
  136. package/text/utf16/module.f.mjs +17 -28
  137. package/text/utf16/test.f.mjs +5 -5
  138. package/text/utf8/module.f.d.mts +4 -9
  139. package/text/utf8/module.f.mjs +9 -16
  140. package/text/utf8/test.f.mjs +4 -4
  141. package/types/array/module.f.d.mts +14 -24
  142. package/types/array/module.f.mjs +8 -25
  143. package/types/array/test.f.mjs +3 -3
  144. package/types/bigfloat/module.f.d.mts +4 -9
  145. package/types/bigfloat/module.f.mjs +3 -10
  146. package/types/bigfloat/test.f.mjs +1 -1
  147. package/types/bigint/module.f.d.mts +16 -64
  148. package/types/bigint/module.f.mjs +11 -30
  149. package/types/bigint/test.f.mjs +1 -1
  150. package/types/btree/find/module.f.d.mts +20 -26
  151. package/types/btree/find/module.f.mjs +8 -17
  152. package/types/btree/find/test.f.mjs +7 -7
  153. package/types/btree/module.f.d.mts +4 -8
  154. package/types/btree/module.f.mjs +6 -11
  155. package/types/btree/remove/module.f.d.mts +7 -12
  156. package/types/btree/remove/module.f.mjs +10 -17
  157. package/types/btree/remove/test.f.mjs +5 -5
  158. package/types/btree/set/module.f.d.mts +3 -7
  159. package/types/btree/set/module.f.mjs +4 -9
  160. package/types/btree/set/test.f.mjs +4 -4
  161. package/types/btree/test.f.mjs +9 -9
  162. package/types/btree/types/module.f.d.mts +0 -2
  163. package/types/btree/types/module.f.mjs +0 -2
  164. package/types/byte_set/module.f.d.mts +16 -29
  165. package/types/byte_set/module.f.mjs +14 -39
  166. package/types/byte_set/test.f.mjs +5 -5
  167. package/types/function/compare/module.f.d.mts +9 -15
  168. package/types/function/compare/module.f.mjs +3 -12
  169. package/types/function/compare/test.f.mjs +1 -1
  170. package/types/function/module.f.d.mts +20 -27
  171. package/types/function/module.f.mjs +4 -15
  172. package/types/function/operator/module.f.d.mts +28 -43
  173. package/types/function/operator/module.f.mjs +14 -41
  174. package/types/function/test.f.mjs +1 -1
  175. package/types/list/module.f.d.mts +56 -91
  176. package/types/list/module.f.mjs +45 -114
  177. package/types/list/test.f.mjs +10 -10
  178. package/types/map/module.f.d.mts +15 -24
  179. package/types/map/module.f.mjs +15 -30
  180. package/types/map/test.f.mjs +2 -2
  181. package/types/nibble_set/module.f.d.mts +10 -20
  182. package/types/nibble_set/module.f.mjs +7 -24
  183. package/types/nibble_set/test.f.mjs +2 -2
  184. package/types/nullable/module.f.d.mts +3 -8
  185. package/types/nullable/module.f.mjs +2 -9
  186. package/types/nullable/test.f.mjs +1 -1
  187. package/types/number/module.f.d.mts +7 -13
  188. package/types/number/module.f.mjs +8 -19
  189. package/types/number/test.f.mjs +1 -1
  190. package/types/object/module.f.d.mts +11 -18
  191. package/types/object/module.f.mjs +9 -20
  192. package/types/object/test.f.mjs +1 -1
  193. package/types/range/module.f.d.mts +3 -8
  194. package/types/range/module.f.mjs +2 -9
  195. package/types/range/test.f.mjs +1 -1
  196. package/types/range_map/module.f.d.mts +9 -15
  197. package/types/range_map/module.f.mjs +9 -18
  198. package/types/range_map/test.f.mjs +32 -32
  199. package/types/result/module.d.mts +3 -3
  200. package/types/result/module.f.d.mts +6 -12
  201. package/types/result/module.f.mjs +3 -12
  202. package/types/result/module.mjs +2 -2
  203. package/types/sorted_list/module.f.d.mts +22 -28
  204. package/types/sorted_list/module.f.mjs +10 -19
  205. package/types/sorted_list/test.f.mjs +7 -7
  206. package/types/sorted_set/module.f.d.mts +6 -12
  207. package/types/sorted_set/module.f.mjs +7 -16
  208. package/types/sorted_set/test.f.mjs +7 -7
  209. package/types/string/module.f.d.mts +8 -14
  210. package/types/string/module.f.mjs +10 -21
  211. package/types/string/test.f.mjs +2 -2
  212. package/types/string_set/module.f.d.mts +8 -16
  213. package/types/string_set/module.f.mjs +12 -27
  214. package/types/string_set/test.f.mjs +1 -1
  215. package/issues/lang/2351-property-accessor.md +0 -44
  216. package/issues/lang/2352-property-call.md +0 -43
  217. package/issues/lang/2353-property-at.md +0 -19
  218. package/issues/test-debug.md +0 -12
  219. /package/issues/{esm.md → 02-esm.md} +0 -0
  220. /package/issues/{djs.md → 03-djs.md} +0 -0
  221. /package/issues/{fs-load.md → 11-fs-load.md} +0 -0
  222. /package/issues/lang/{2330-grouping.md → 2350-grouping.md} +0 -0
@@ -1,79 +1,79 @@
1
- import _, * as T from './module.f.mjs'
2
- import compare from '../function/compare/module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
+ import * as compare from '../function/compare/module.f.mjs'
3
3
  const { unsafeCmp } = compare
4
- import json, * as Json from '../../json/module.f.mjs'
5
- import object from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.mjs'
5
+ import * as object from '../object/module.f.mjs'
6
6
  const { sort } = object
7
- import sortedSet, * as SortedSet from '../sorted_set/module.f.mjs'
8
- import list from '../list/module.f.mjs'
9
- import operator from '../function/operator/module.f.mjs'
7
+ import * as sortedSet from '../sorted_set/module.f.mjs'
8
+ import * as list from '../list/module.f.mjs'
9
+ import * as operator from '../function/operator/module.f.mjs'
10
10
 
11
- /** @type {(a: readonly Json.Unknown[]) => string} */
11
+ /** @type {(a: readonly json.Unknown[]) => string} */
12
12
  const stringify = json.stringify(sort)
13
13
 
14
- /** @type {T.Operators<SortedSet.SortedSet<string>>} */
14
+ /** @type {_.Operators<sortedSet.SortedSet<string>>} */
15
15
  const op = { union: sortedSet.union(unsafeCmp), equal: list.equal(operator.strictEqual) }
16
16
 
17
17
  export default {
18
18
  merge: [
19
19
  () => {
20
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
20
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
21
21
  const a = [[['a'], 1], [['b'], 2]]
22
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
22
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
23
23
  const b = null
24
24
  const merged = _.merge(op)(a)(b)
25
25
  const result = stringify(list.toArray(merged))
26
26
  if (result !== '[[["a"],1],[["b"],2]]') { throw result }
27
27
  },
28
28
  () => {
29
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
29
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
30
30
  const a = null
31
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
31
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
32
32
  const b = [[['a'], 1], [['b'], 2]]
33
33
  const merged = _.merge(op)(a)(b)
34
34
  const result = stringify(list.toArray(merged))
35
35
  if (result !== '[[["a"],1],[["b"],2]]') { throw result }
36
36
  },
37
37
  () => {
38
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
38
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
39
39
  const a = [[['a'], 1], [['b'], 2]]
40
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
40
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
41
41
  const b = [[['a'], 1], [['b'], 2]]
42
42
  const merged = _.merge(op)(a)(b)
43
43
  const result = stringify(list.toArray(merged))
44
44
  if (result !== '[[["a"],1],[["b"],2]]') { throw result }
45
45
  },
46
46
  () => {
47
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
47
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
48
48
  const a = [[['a'], 1], [['c'], 3]]
49
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
49
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
50
50
  const b = [[['b'], 2], [['d'], 4]]
51
51
  const merged = _.merge(op)(a)(b)
52
52
  const result = stringify(list.toArray(merged))
53
53
  if (result !== '[[["a","b"],1],[["b","c"],2],[["c","d"],3],[["d"],4]]') { throw result }
54
54
  },
55
55
  () => {
56
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
56
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
57
57
  const a = [[['a'], 1], [['d'], 4]]
58
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
58
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
59
59
  const b = [[['b'], 2], [['c'], 3]]
60
60
  const merged = _.merge(op)(a)(b)
61
61
  const result = stringify(list.toArray(merged))
62
62
  if (result !== '[[["a","b"],1],[["b","d"],2],[["c","d"],3],[["d"],4]]') { throw result }
63
63
  },
64
64
  () => {
65
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
65
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
66
66
  const a = [[['a'], 1], [['b'], 2]]
67
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
67
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
68
68
  const b = [[['b'], 1], [['a'], 2]]
69
69
  const merged = _.merge(op)(a)(b)
70
70
  const result = stringify(list.toArray(merged))
71
71
  if (result !== '[[["a","b"],2]]') { throw result }
72
72
  },
73
73
  () => {
74
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
74
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
75
75
  const a = [[['a'], 1], [['b'], 2], [['a'], 3]]
76
- /** @type {T.RangeMap<SortedSet.SortedSet<string>>} */
76
+ /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
77
77
  const b = [[['a'], 5]]
78
78
  const merged = _.merge(op)(a)(b)
79
79
  const result = stringify(list.toArray(merged))
@@ -81,54 +81,54 @@ export default {
81
81
  }
82
82
  ],
83
83
  get: () => {
84
- /** @type {SortedSet.SortedSet<string>} */
84
+ /** @type {sortedSet.SortedSet<string>} */
85
85
  const sortedSetEmpty = []
86
86
  const get = _.get(sortedSetEmpty)
87
87
  return [
88
88
  () => {
89
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
89
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
90
90
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
91
91
  const result = stringify(get(5)(rm))
92
92
  if (result !== '["a"]') { throw result }
93
93
  },
94
94
  () => {
95
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
95
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
96
96
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
97
97
  const result = stringify(get(10)(rm))
98
98
  if (result !== '["a"]') { throw result }
99
99
  },
100
100
  () => {
101
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
101
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
102
102
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
103
103
  const result = stringify(get(15)(rm))
104
104
  if (result !== '["b"]') { throw result }
105
105
  },
106
106
  () => {
107
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
107
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
108
108
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
109
109
  const result = stringify(get(20)(rm))
110
110
  if (result !== '["b"]') { throw result }
111
111
  },
112
112
  () => {
113
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
113
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
114
114
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
115
115
  const result = stringify(get(25)(rm))
116
116
  if (result !== '["c"]') { throw result }
117
117
  },
118
118
  () => {
119
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
119
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
120
120
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
121
121
  const result = stringify(get(30)(rm))
122
122
  if (result !== '["c"]') { throw result }
123
123
  },
124
124
  () => {
125
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
125
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
126
126
  const rm = [[['a'], 10], [['b'], 20], [['c'], 30]]
127
127
  const result = stringify(get(35)(rm))
128
128
  if (result !== '[]') { throw result }
129
129
  },
130
130
  () => {
131
- /** @type {T.RangeMapArray<SortedSet.SortedSet<string>>} */
131
+ /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
132
132
  const rm = []
133
133
  const result = stringify(get(10)(rm))
134
134
  if (result !== '[]') { throw result }
@@ -2,6 +2,6 @@ declare namespace _default {
2
2
  export { tryCatch };
3
3
  }
4
4
  export default _default;
5
- /** @type {<T>(f: () => T) => Result.Result<T, unknown>} */
6
- declare const tryCatch: <T>(f: () => T) => Result.Result<T, unknown>;
7
- import * as Result from './module.f.mjs';
5
+ /** @type {<T>(f: () => T) => result.Result<T, unknown>} */
6
+ declare const tryCatch: <T>(f: () => T) => result.Result<T, unknown>;
7
+ import * as result from './module.f.mjs';
@@ -1,12 +1,3 @@
1
- declare namespace _default {
2
- export { ok };
3
- export { error };
4
- export { unwrap };
5
- }
6
- export default _default;
7
- export type Ok<T> = readonly ["ok", T];
8
- export type Error<E> = readonly ["error", E];
9
- export type Result<T, E> = Ok<T> | Error<E>;
10
1
  /**
11
2
  * @template T
12
3
  * @typedef {readonly['ok', T]} Ok
@@ -21,8 +12,11 @@ export type Result<T, E> = Ok<T> | Error<E>;
21
12
  * @typedef {Ok<T>|Error<E>} Result
22
13
  */
23
14
  /** @type {<T>(value: T) => Ok<T>} */
24
- declare const ok: <T>(value: T) => Ok<T>;
15
+ export const ok: <T>(value: T) => Ok<T>;
25
16
  /** @type {<E>(e: E) => Error<E>} */
26
- declare const error: <E>(e: E) => Error<E>;
17
+ export const error: <E>(e: E) => Error<E>;
27
18
  /** @type {<T, E>(r: Result<T, E>) => T} */
28
- declare const unwrap: <T, E>(r: Result<T, E>) => T;
19
+ export const unwrap: <T, E>(r: Result<T, E>) => T;
20
+ export type Ok<T> = readonly ["ok", T];
21
+ export type Error<E> = readonly ["error", E];
22
+ export type Result<T, E> = Ok<T> | Error<E>;
@@ -16,22 +16,13 @@
16
16
  */
17
17
 
18
18
  /** @type {<T>(value: T) => Ok<T>} */
19
- const ok = value => ['ok', value]
19
+ export const ok = value => ['ok', value]
20
20
 
21
21
  /** @type {<E>(e: E) => Error<E>} */
22
- const error = e => ['error', e]
22
+ export const error = e => ['error', e]
23
23
 
24
24
  /** @type {<T, E>(r: Result<T, E>) => T} */
25
- const unwrap = ([kind, v]) => {
25
+ export const unwrap = ([kind, v]) => {
26
26
  if (kind === 'error') { throw v }
27
27
  return v
28
28
  }
29
-
30
- export default {
31
- /** @readonly */
32
- ok,
33
- /** @readonly */
34
- error,
35
- /** @readonly */
36
- unwrap,
37
- }
@@ -1,7 +1,7 @@
1
- import result, * as Result from './module.f.mjs'
1
+ import * as result from './module.f.mjs'
2
2
  const { ok, error } = result
3
3
 
4
- /** @type {<T>(f: () => T) => Result.Result<T, unknown>} */
4
+ /** @type {<T>(f: () => T) => result.Result<T, unknown>} */
5
5
  const tryCatch = f => {
6
6
  // Side effect: `try catch` is not allowed in FunctionalScript.
7
7
  try {
@@ -1,28 +1,6 @@
1
- declare namespace _default {
2
- export { merge };
3
- export { genericMerge };
4
- export { find };
5
- }
6
- export default _default;
7
- export type SortedList<T> = List.List<T>;
8
- export type SortedArray<T> = readonly T[];
9
- export type Cmp<T> = (a: T) => (b: T) => compare.Sign;
10
- export type ReduceOp<T, S> = (state: S) => (a: T) => (b: T) => readonly [option.Nullable<T>, compare.Sign, S];
11
- export type TailReduce<T, S> = (state: S) => (tail: List.List<T>) => List.List<T>;
12
- export type MergeReduce<T, S> = {
13
- readonly reduceOp: ReduceOp<T, S>;
14
- readonly tailReduce: TailReduce<T, S>;
15
- };
16
- export type CmpReduceOp<T> = ReduceOp<T, null>;
17
- /**
18
- * @template T
19
- * @typedef {ReduceOp<T, null>} CmpReduceOp
20
- */
21
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>} */
22
- declare const merge: <T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>;
23
1
  /**
24
2
  * @template T
25
- * @typedef {List.List<T>} SortedList
3
+ * @typedef {list.List<T>} SortedList
26
4
  */
27
5
  /**
28
6
  * @template T
@@ -40,7 +18,7 @@ declare const merge: <T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>
40
18
  /**
41
19
  * @template T
42
20
  * @template S
43
- * @typedef {(state: S) => (tail: List.List<T>) => List.List<T>} TailReduce
21
+ * @typedef {(state: S) => (tail: list.List<T>) => list.List<T>} TailReduce
44
22
  */
45
23
  /**
46
24
  * @template T
@@ -50,10 +28,26 @@ declare const merge: <T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>
50
28
  * readonly tailReduce: TailReduce<T,S>
51
29
  * }} MergeReduce
52
30
  */
53
- /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: List.List<T>) => (b: List.List<T>) => List.List<T>} */
54
- declare const genericMerge: <T, S>(reduce: MergeReduce<T, S>) => (state: S) => (a: List.List<T>) => (b: List.List<T>) => List.List<T>;
31
+ /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
32
+ export const genericMerge: <T, S>(reduce: MergeReduce<T, S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>;
33
+ /**
34
+ * @template T
35
+ * @typedef {ReduceOp<T, null>} CmpReduceOp
36
+ */
37
+ /** @type {<T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>} */
38
+ export const merge: <T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>;
55
39
  /** @type {<T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T|null} */
56
- declare const find: <T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T | null;
57
- import * as List from '../list/module.f.mjs';
40
+ export const find: <T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T | null;
41
+ export type SortedList<T> = list.List<T>;
42
+ export type SortedArray<T> = readonly T[];
43
+ export type Cmp<T> = (a: T) => (b: T) => compare.Sign;
44
+ export type ReduceOp<T, S> = (state: S) => (a: T) => (b: T) => readonly [option.Nullable<T>, compare.Sign, S];
45
+ export type TailReduce<T, S> = (state: S) => (tail: list.List<T>) => list.List<T>;
46
+ export type MergeReduce<T, S> = {
47
+ readonly reduceOp: ReduceOp<T, S>;
48
+ readonly tailReduce: TailReduce<T, S>;
49
+ };
50
+ export type CmpReduceOp<T> = ReduceOp<T, null>;
51
+ import * as list from '../list/module.f.mjs';
58
52
  import * as compare from '../function/compare/module.f.mjs';
59
53
  import * as option from '../nullable/module.f.mjs';
@@ -1,14 +1,14 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
  import * as compare from '../function/compare/module.f.mjs'
3
- import list, * as List from '../list/module.f.mjs'
3
+ import * as list from '../list/module.f.mjs'
4
4
  import * as option from '../nullable/module.f.mjs'
5
5
  const { next } = list
6
- import f from '../function/module.f.mjs'
6
+ import * as f from '../function/module.f.mjs'
7
7
  const { identity } = f
8
8
 
9
9
  /**
10
10
  * @template T
11
- * @typedef {List.List<T>} SortedList
11
+ * @typedef {list.List<T>} SortedList
12
12
  */
13
13
 
14
14
  /**
@@ -30,7 +30,7 @@ const { identity } = f
30
30
  /**
31
31
  * @template T
32
32
  * @template S
33
- * @typedef {(state: S) => (tail: List.List<T>) => List.List<T>} TailReduce
33
+ * @typedef {(state: S) => (tail: list.List<T>) => list.List<T>} TailReduce
34
34
  */
35
35
 
36
36
  /**
@@ -42,12 +42,12 @@ const { identity } = f
42
42
  * }} MergeReduce
43
43
  */
44
44
 
45
- /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: List.List<T>) => (b: List.List<T>) => List.List<T>} */
46
- const genericMerge = ({ reduceOp, tailReduce }) => {
45
+ /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
46
+ export const genericMerge = ({ reduceOp, tailReduce }) => {
47
47
  /** @typedef {typeof reduceOp extends ReduceOp<infer T, infer S> ? [T, S] : never} TS */
48
48
  /** @typedef {TS[0]} T */
49
49
  /** @typedef {TS[1]} S */
50
- /** @type {(state: S) => (a: List.List<T>) => (b: List.List<T>) => List.List<T>} */
50
+ /** @type {(state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
51
51
  const f = state => a => b => () => {
52
52
  const aResult = next(a)
53
53
  if (aResult === null) { return tailReduce(state)(b) }
@@ -68,7 +68,7 @@ const genericMerge = ({ reduceOp, tailReduce }) => {
68
68
  */
69
69
 
70
70
  /** @type {<T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>} */
71
- const merge = cmp => {
71
+ export const merge = cmp => {
72
72
  /** @typedef {typeof cmp extends Cmp<infer T> ? T : never} T*/
73
73
  /** @type {TailReduce<T, null>} */
74
74
  const tailReduce = mergeTail
@@ -81,11 +81,11 @@ const cmpReduce = cmp => () => a => b => {
81
81
  return [sign === 1 ? b : a, sign, null]
82
82
  }
83
83
 
84
- /** @type {() => <T>(tail: List.List<T>) => List.List<T>} */
84
+ /** @type {() => <T>(tail: list.List<T>) => list.List<T>} */
85
85
  const mergeTail = () => identity
86
86
 
87
87
  /** @type {<T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T|null} */
88
- const find = cmp => value => array => {
88
+ export const find = cmp => value => array => {
89
89
  let b = 0
90
90
  let e = array.length - 1
91
91
  while (true) {
@@ -105,12 +105,3 @@ const find = cmp => value => array => {
105
105
  }
106
106
  }
107
107
  }
108
-
109
- export default {
110
- /** @readonly */
111
- merge,
112
- /** @readonly */
113
- genericMerge,
114
- /** @readonly */
115
- find
116
- }
@@ -1,16 +1,16 @@
1
- import _ from './module.f.mjs'
2
- import compare from '../function/compare/module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
+ import * as compare from '../function/compare/module.f.mjs'
3
3
  const { unsafeCmp } = compare
4
- import json, * as Json from '../../json/module.f.mjs'
5
- import object from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.mjs'
5
+ import * as object from '../object/module.f.mjs'
6
6
  const { sort } = object
7
- import list from '../list/module.f.mjs'
7
+ import * as list from '../list/module.f.mjs'
8
8
  const { toArray, countdown, length } = list
9
9
  import * as Map from '../map/module.f.mjs'
10
- import f from '../function/module.f.mjs'
10
+ import * as f from '../function/module.f.mjs'
11
11
  const { flip } = f
12
12
 
13
- /** @type {(a: readonly Json.Unknown[]) => string} */
13
+ /** @type {(a: readonly json.Unknown[]) => string} */
14
14
  const stringify = json.stringify(sort)
15
15
 
16
16
  /** @type {<T>(a: T) => (b: T) => Map.Sign} */
@@ -1,12 +1,3 @@
1
- declare namespace _default {
2
- export { union };
3
- export { intersect };
4
- export { has };
5
- }
6
- export default _default;
7
- export type SortedSet<T> = readonly T[];
8
- export type Cmp<T> = (a: T) => (b: T) => Compare.Sign;
9
- export type Byte = number;
10
1
  /**
11
2
  * @template T
12
3
  * @typedef {readonly T[]} SortedSet
@@ -17,9 +8,12 @@ export type Byte = number;
17
8
  */
18
9
  /** @typedef {number} Byte */
19
10
  /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
20
- declare const union: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
11
+ export const union: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
21
12
  /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
22
- declare const intersect: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
13
+ export const intersect: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
23
14
  /** @type {<T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean} */
24
- declare const has: <T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean;
15
+ export const has: <T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean;
16
+ export type SortedSet<T> = readonly T[];
17
+ export type Cmp<T> = (a: T) => (b: T) => Compare.Sign;
18
+ export type Byte = number;
25
19
  import * as Compare from '../function/compare/module.f.mjs';
@@ -1,8 +1,8 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
  import * as Compare from '../function/compare/module.f.mjs'
3
- import list from "../list/module.f.mjs"
3
+ import * as list from "../list/module.f.mjs"
4
4
  const { toArray } = list
5
- import sortedList, * as SortedList from '../sorted_list/module.f.mjs'
5
+ import * as sortedList from '../sorted_list/module.f.mjs'
6
6
  const { merge, genericMerge, find } = sortedList
7
7
 
8
8
  /**
@@ -18,30 +18,21 @@ const { merge, genericMerge, find } = sortedList
18
18
  /** @typedef {number} Byte */
19
19
 
20
20
  /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
21
- const union = cmp => a => b => toArray(merge(cmp)(a)(b))
21
+ export const union = cmp => a => b => toArray(merge(cmp)(a)(b))
22
22
 
23
23
  /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
24
- const intersect = cmp => a => b => toArray(intersectMerge(cmp)(a)(b))
24
+ export const intersect = cmp => a => b => toArray(intersectMerge(cmp)(a)(b))
25
25
 
26
26
  const tailReduce = () => () => null
27
27
 
28
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedList.SortedList<T>) => (b: SortedList.SortedList<T>) => SortedList.SortedList<T>} */
28
+ /** @type {<T>(cmp: Cmp<T>) => (a: sortedList.SortedList<T>) => (b: sortedList.SortedList<T>) => sortedList.SortedList<T>} */
29
29
  const intersectMerge = cmp => genericMerge({ reduceOp: intersectReduce(cmp), tailReduce })(null)
30
30
 
31
- /** @type {<T,S>(cmp: Cmp<T>) => SortedList.ReduceOp<T,S>} */
31
+ /** @type {<T,S>(cmp: Cmp<T>) => sortedList.ReduceOp<T,S>} */
32
32
  const intersectReduce = cmp => state => a => b => {
33
33
  const sign = cmp(a)(b)
34
34
  return [sign === 0 ? a : null, sign, state]
35
35
  }
36
36
 
37
37
  /** @type {<T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean} */
38
- const has = cmp => value => set => find(cmp)(value)(set) === value
39
-
40
- export default {
41
- /** @readonly */
42
- union,
43
- /** @readonly */
44
- intersect,
45
- /** @readonly */
46
- has
47
- }
38
+ export const has = cmp => value => set => find(cmp)(value)(set) === value
@@ -1,16 +1,16 @@
1
- import _ from './module.f.mjs'
2
- import compare from '../function/compare/module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
+ import * as compare from '../function/compare/module.f.mjs'
3
3
  const { unsafeCmp } = compare
4
- import json, * as Json from '../../json/module.f.mjs'
5
- import object from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.mjs'
5
+ import * as object from '../object/module.f.mjs'
6
6
  const { sort } = object
7
- import list from '../list/module.f.mjs'
7
+ import * as list from '../list/module.f.mjs'
8
8
  const { toArray, countdown, length } = list
9
9
  import * as Map from '../map/module.f.mjs'
10
- import f from '../function/module.f.mjs'
10
+ import * as f from '../function/module.f.mjs'
11
11
  const { flip } = f
12
12
 
13
- /** @type {(a: readonly Json.Unknown[]) => string} */
13
+ /** @type {(a: readonly json.Unknown[]) => string} */
14
14
  const stringify = a => json.stringify(sort)(a)
15
15
 
16
16
  /** @type {<T>(a: T) => (b: T) => Map.Sign} */
@@ -1,15 +1,9 @@
1
- declare namespace _default {
2
- export { join };
3
- export { concat };
4
- export { repeat };
5
- export { cmp };
6
- }
7
- export default _default;
8
- declare const join: import("../function/module.f.mjs").Func<string, (input: List.List<string>) => string>;
9
- declare const concat: (input: List.List<string>) => string;
1
+ export const join: f.Func<string, (input: list.List<string>) => string>;
2
+ export const concat: (input: list.List<string>) => string;
10
3
  /** @type {(n: string) => (v: number) => string} */
11
- declare const repeat: (n: string) => (v: number) => string;
12
- /** @type {(a: string) => (b: string) => Compare.Sign} */
13
- declare const cmp: (a: string) => (b: string) => Compare.Sign;
14
- import * as List from '../list/module.f.mjs';
15
- import * as Compare from '../function/compare/module.f.mjs';
4
+ export const repeat: (n: string) => (v: number) => string;
5
+ /** @type {(a: string) => (b: string) => compare.Sign} */
6
+ export const cmp: (a: string) => (b: string) => compare.Sign;
7
+ import * as list from '../list/module.f.mjs';
8
+ import * as f from '../function/module.f.mjs';
9
+ import * as compare from '../function/compare/module.f.mjs';
@@ -1,33 +1,22 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import list, * as List from '../list/module.f.mjs'
2
+ import * as list from '../list/module.f.mjs'
3
3
  const { reduce: listReduce, repeat: listRepeat } = list
4
- import f from '../function/module.f.mjs'
4
+ import * as f from '../function/module.f.mjs'
5
5
  const { compose } = f
6
- import compare, * as Compare from '../function/compare/module.f.mjs'
6
+ import * as compare from '../function/compare/module.f.mjs'
7
7
  const { unsafeCmp } = compare
8
- import op, * as Op from '../function/operator/module.f.mjs'
8
+ import * as op from '../function/operator/module.f.mjs'
9
9
  const { join: joinOp, concat: concatOp } = op
10
10
 
11
- /** @type {(o: Op.Reduce<string>) => (input: List.List<string>) => string} */
11
+ /** @type {(o: op.Reduce<string>) => (input: list.List<string>) => string} */
12
12
  const reduce = o => listReduce(o)('')
13
13
 
14
- const join = compose(joinOp)(reduce)
14
+ export const join = compose(joinOp)(reduce)
15
15
 
16
- const concat = reduce(concatOp)
16
+ export const concat = reduce(concatOp)
17
17
 
18
18
  /** @type {(n: string) => (v: number) => string} */
19
- const repeat = v => compose(listRepeat(v))(concat)
19
+ export const repeat = v => compose(listRepeat(v))(concat)
20
20
 
21
- /** @type {(a: string) => (b: string) => Compare.Sign} */
22
- const cmp = unsafeCmp
23
-
24
- export default {
25
- /** @readonly */
26
- join,
27
- /** @readonly */
28
- concat,
29
- /** @readonly */
30
- repeat,
31
- /** @readonly */
32
- cmp,
33
- }
21
+ /** @type {(a: string) => (b: string) => compare.Sign} */
22
+ export const cmp = unsafeCmp
@@ -1,6 +1,6 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
  const { join, concat, repeat, cmp } = _
3
- import list from '../list/module.f.mjs'
3
+ import * as list from '../list/module.f.mjs'
4
4
  const { repeat: repeatList } = list
5
5
 
6
6
  export default {
@@ -1,21 +1,13 @@
1
- declare namespace _default {
2
- export { empty };
3
- export { contains };
4
- export { set };
5
- export { values };
6
- export { fromValues };
7
- export { remove };
8
- }
9
- export default _default;
10
- export type StringSet = BtreeTypes.Tree<string>;
11
- declare const empty: null;
1
+ export const values: <T>(tree: BtreeTypes.Tree<T>) => list.List<T>;
2
+ export const empty: null;
12
3
  /** @typedef {BtreeTypes.Tree<string>} StringSet */
13
4
  /** @type {(value: string) => (set: StringSet) => boolean} */
14
- declare const contains: (value: string) => (set: StringSet) => boolean;
5
+ export const contains: (value: string) => (set: StringSet) => boolean;
15
6
  /** @type {(value: string) => (s: StringSet) => StringSet} */
16
- declare const set: (value: string) => (s: StringSet) => StringSet;
17
- declare const values: <T>(tree: BtreeTypes.Tree<T>) => import("../list/module.f.mjs").List<T>;
18
- declare const fromValues: (input: import("../list/module.f.mjs").List<string>) => StringSet;
7
+ export const set: (value: string) => (s: StringSet) => StringSet;
8
+ export const fromValues: (input: list.List<string>) => StringSet;
19
9
  /** @type {(value: string) => (s: StringSet) => StringSet} */
20
- declare const remove: (value: string) => (s: StringSet) => StringSet;
10
+ export const remove: (value: string) => (s: StringSet) => StringSet;
11
+ export type StringSet = BtreeTypes.Tree<string>;
21
12
  import * as BtreeTypes from '../btree/types/module.f.mjs';
13
+ import * as list from '../list/module.f.mjs';