functionalscript 0.1.609 → 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.
- package/com/cpp/module.f.d.mts +4 -8
- package/com/cpp/module.f.mjs +20 -25
- package/com/cpp/testlib.f.mjs +3 -4
- package/com/cs/module.f.d.mts +4 -8
- package/com/cs/module.f.mjs +18 -23
- package/com/cs/testlib.f.mjs +3 -5
- package/com/rust/module.f.d.mts +3 -7
- package/com/rust/module.f.mjs +25 -30
- package/com/rust/testlib.f.mjs +3 -5
- package/com/test/build.f.d.mts +2 -2
- package/com/test/build.f.mjs +2 -2
- package/com/test/build.mjs +4 -4
- package/com/types/module.f.d.mts +5 -10
- package/com/types/module.f.mjs +5 -12
- package/commonjs/build/module.f.d.mts +13 -17
- package/commonjs/build/module.f.mjs +23 -28
- package/commonjs/build/test.f.mjs +4 -4
- package/commonjs/module/function/module.f.d.mts +0 -2
- package/commonjs/module/function/module.f.mjs +0 -2
- package/commonjs/module/module.f.d.mts +16 -21
- package/commonjs/module/module.f.mjs +2 -9
- package/commonjs/module.d.mts +1 -5
- package/commonjs/module.f.d.mts +0 -2
- package/commonjs/module.f.mjs +0 -2
- package/commonjs/module.mjs +2 -7
- package/commonjs/package/dependencies/module.f.d.mts +3 -7
- package/commonjs/package/dependencies/module.f.mjs +5 -10
- package/commonjs/package/dependencies/test.f.mjs +1 -1
- package/commonjs/package/module.f.d.mts +12 -18
- package/commonjs/package/module.f.mjs +6 -13
- package/commonjs/package/test.f.mjs +1 -1
- package/commonjs/path/module.f.d.mts +25 -32
- package/commonjs/path/module.f.mjs +12 -23
- package/commonjs/path/test.f.mjs +11 -11
- package/commonjs/test.mjs +1 -1
- package/dev/module.f.d.mts +1 -4
- package/dev/module.f.mjs +1 -4
- package/dev/test/module.f.d.mts +2 -3
- package/dev/test/module.f.mjs +4 -6
- package/djs/module.f.d.mts +13 -18
- package/djs/module.f.mjs +12 -19
- package/djs/parser/module.f.d.mts +11 -15
- package/djs/parser/module.f.mjs +18 -24
- package/djs/parser/test.f.mjs +9 -9
- package/djs/test.f.mjs +4 -4
- package/djs/tokenizer/module.f.d.mts +6 -10
- package/djs/tokenizer/module.f.mjs +18 -23
- package/djs/tokenizer/test.f.mjs +6 -6
- package/fsc/module.f.d.mts +4 -9
- package/fsc/module.f.mjs +17 -24
- package/fsc/test.f.mjs +3 -3
- package/fsm/module.f.d.mts +13 -20
- package/fsm/module.f.mjs +27 -38
- package/fsm/test.f.mjs +8 -8
- package/html/module.f.d.mts +7 -12
- package/html/module.f.mjs +14 -23
- package/html/test.f.mjs +4 -4
- package/js/tokenizer/module.f.d.mts +10 -15
- package/js/tokenizer/module.f.mjs +55 -62
- package/js/tokenizer/test.f.mjs +6 -6
- package/json/module.f.d.mts +18 -26
- package/json/module.f.mjs +18 -31
- package/json/parser/module.f.d.mts +9 -13
- package/json/parser/module.f.mjs +9 -14
- package/json/parser/test.f.mjs +7 -7
- package/json/serializer/module.f.d.mts +11 -20
- package/json/serializer/module.f.mjs +14 -29
- package/json/serializer/test.f.mjs +2 -2
- package/json/test.f.mjs +3 -3
- package/json/tokenizer/module.f.d.mts +6 -10
- package/json/tokenizer/module.f.mjs +14 -19
- package/json/tokenizer/test.f.mjs +6 -6
- package/jsr.json +1 -1
- package/nodejs/version/main.mjs +1 -1
- package/nodejs/version/module.f.d.mts +4 -9
- package/nodejs/version/module.f.mjs +2 -7
- package/nodejs/version/test.f.mjs +3 -3
- package/package.json +1 -1
- package/prime_field/module.f.d.mts +20 -23
- package/prime_field/module.f.mjs +9 -12
- package/prime_field/test.f.mjs +1 -1
- package/secp/module.f.d.mts +27 -28
- package/secp/module.f.mjs +38 -39
- package/secp/test.f.mjs +4 -4
- package/sha2/module.f.d.mts +8 -16
- package/sha2/module.f.mjs +7 -20
- package/sha2/test.f.mjs +4 -4
- package/text/ascii/module.f.d.mts +69 -72
- package/text/ascii/module.f.mjs +5 -10
- package/text/ascii/test.f.mjs +3 -3
- package/text/module.f.d.mts +9 -14
- package/text/module.f.mjs +7 -14
- package/text/sgr/module.f.d.mts +7 -9
- package/text/sgr/module.f.mjs +2 -4
- package/text/test.f.mjs +3 -3
- package/text/utf16/module.f.d.mts +8 -15
- package/text/utf16/module.f.mjs +17 -28
- package/text/utf16/test.f.mjs +5 -5
- package/text/utf8/module.f.d.mts +4 -9
- package/text/utf8/module.f.mjs +9 -16
- package/text/utf8/test.f.mjs +4 -4
- package/types/array/module.f.d.mts +14 -24
- package/types/array/module.f.mjs +8 -25
- package/types/array/test.f.mjs +3 -3
- package/types/bigfloat/module.f.d.mts +4 -9
- package/types/bigfloat/module.f.mjs +3 -10
- package/types/bigfloat/test.f.mjs +1 -1
- package/types/bigint/module.f.d.mts +16 -64
- package/types/bigint/module.f.mjs +11 -30
- package/types/bigint/test.f.mjs +1 -1
- package/types/btree/find/module.f.d.mts +20 -26
- package/types/btree/find/module.f.mjs +8 -17
- package/types/btree/find/test.f.mjs +7 -7
- package/types/btree/module.f.d.mts +4 -8
- package/types/btree/module.f.mjs +6 -11
- package/types/btree/remove/module.f.d.mts +7 -12
- package/types/btree/remove/module.f.mjs +10 -17
- package/types/btree/remove/test.f.mjs +5 -5
- package/types/btree/set/module.f.d.mts +3 -7
- package/types/btree/set/module.f.mjs +4 -9
- package/types/btree/set/test.f.mjs +4 -4
- package/types/btree/test.f.mjs +9 -9
- package/types/btree/types/module.f.d.mts +0 -2
- package/types/btree/types/module.f.mjs +0 -2
- package/types/byte_set/module.f.d.mts +16 -29
- package/types/byte_set/module.f.mjs +14 -39
- package/types/byte_set/test.f.mjs +5 -5
- package/types/function/compare/module.f.d.mts +9 -15
- package/types/function/compare/module.f.mjs +3 -12
- package/types/function/compare/test.f.mjs +1 -1
- package/types/function/module.f.d.mts +20 -27
- package/types/function/module.f.mjs +4 -15
- package/types/function/operator/module.f.d.mts +28 -43
- package/types/function/operator/module.f.mjs +14 -41
- package/types/function/test.f.mjs +1 -1
- package/types/list/module.f.d.mts +56 -91
- package/types/list/module.f.mjs +45 -114
- package/types/list/test.f.mjs +10 -10
- package/types/map/module.f.d.mts +15 -24
- package/types/map/module.f.mjs +15 -30
- package/types/map/test.f.mjs +2 -2
- package/types/nibble_set/module.f.d.mts +10 -20
- package/types/nibble_set/module.f.mjs +7 -24
- package/types/nibble_set/test.f.mjs +2 -2
- package/types/nullable/module.f.d.mts +3 -8
- package/types/nullable/module.f.mjs +2 -9
- package/types/nullable/test.f.mjs +1 -1
- package/types/number/module.f.d.mts +7 -13
- package/types/number/module.f.mjs +8 -19
- package/types/number/test.f.mjs +1 -1
- package/types/object/module.f.d.mts +11 -18
- package/types/object/module.f.mjs +9 -20
- package/types/object/test.f.mjs +1 -1
- package/types/range/module.f.d.mts +3 -8
- package/types/range/module.f.mjs +2 -9
- package/types/range/test.f.mjs +1 -1
- package/types/range_map/module.f.d.mts +9 -15
- package/types/range_map/module.f.mjs +9 -18
- package/types/range_map/test.f.mjs +32 -32
- package/types/result/module.d.mts +3 -3
- package/types/result/module.f.d.mts +6 -12
- package/types/result/module.f.mjs +3 -12
- package/types/result/module.mjs +2 -2
- package/types/sorted_list/module.f.d.mts +22 -28
- package/types/sorted_list/module.f.mjs +10 -19
- package/types/sorted_list/test.f.mjs +7 -7
- package/types/sorted_set/module.f.d.mts +6 -12
- package/types/sorted_set/module.f.mjs +7 -16
- package/types/sorted_set/test.f.mjs +7 -7
- package/types/string/module.f.d.mts +8 -14
- package/types/string/module.f.mjs +10 -21
- package/types/string/test.f.mjs +2 -2
- package/types/string_set/module.f.d.mts +8 -16
- package/types/string_set/module.f.mjs +12 -27
- package/types/string_set/test.f.mjs +1 -1
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare const sum: (input: import("../list/module.f.mjs").List<number>) => number;
|
|
9
|
-
declare const min: (input: import("../list/module.f.mjs").List<number>) => number | null;
|
|
10
|
-
declare const max: (input: import("../list/module.f.mjs").List<number>) => number | null;
|
|
11
|
-
/** @type {(a: number) => (b: number) => Compare.Sign} */
|
|
12
|
-
declare const cmp: (a: number) => (b: number) => Compare.Sign;
|
|
13
|
-
import * as Compare from '../function/compare/module.f.mjs';
|
|
1
|
+
export const sum: (input: list.List<number>) => number;
|
|
2
|
+
export const min: (input: list.List<number>) => number | null;
|
|
3
|
+
export const max: (input: list.List<number>) => number | null;
|
|
4
|
+
/** @type {(a: number) => (b: number) => compare.Sign} */
|
|
5
|
+
export const cmp: (a: number) => (b: number) => compare.Sign;
|
|
6
|
+
import * as list from '../list/module.f.mjs';
|
|
7
|
+
import * as compare from '../function/compare/module.f.mjs';
|
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import list from '../list/module.f.mjs'
|
|
2
|
+
import * as list from '../list/module.f.mjs'
|
|
3
3
|
const { reduce } = list
|
|
4
|
-
import operator from '../function/operator/module.f.mjs'
|
|
4
|
+
import * as operator from '../function/operator/module.f.mjs'
|
|
5
5
|
const { addition, min: minOp, max: maxOp } = operator
|
|
6
|
-
import
|
|
6
|
+
import * as compare from '../function/compare/module.f.mjs'
|
|
7
7
|
const { unsafeCmp } = compare
|
|
8
8
|
|
|
9
|
-
const sum = reduce(addition)(0)
|
|
9
|
+
export const sum = reduce(addition)(0)
|
|
10
10
|
|
|
11
|
-
const min = reduce(minOp)(null)
|
|
11
|
+
export const min = reduce(minOp)(null)
|
|
12
12
|
|
|
13
|
-
const max = reduce(maxOp)(null)
|
|
13
|
+
export const max = reduce(maxOp)(null)
|
|
14
14
|
|
|
15
|
-
/** @type {(a: number) => (b: number) =>
|
|
16
|
-
const cmp = unsafeCmp
|
|
17
|
-
|
|
18
|
-
export default {
|
|
19
|
-
/** @readonly */
|
|
20
|
-
sum,
|
|
21
|
-
/** @readonly */
|
|
22
|
-
min,
|
|
23
|
-
/** @readonly */
|
|
24
|
-
max,
|
|
25
|
-
/** @readonly */
|
|
26
|
-
cmp,
|
|
27
|
-
}
|
|
15
|
+
/** @type {(a: number) => (b: number) => compare.Sign} */
|
|
16
|
+
export const cmp = unsafeCmp
|
package/types/number/test.f.mjs
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { at };
|
|
3
|
-
export { sort };
|
|
4
|
-
export { fromEntries };
|
|
5
|
-
export { fromMap };
|
|
6
|
-
}
|
|
7
|
-
export default _default;
|
|
8
|
-
export type Map<T> = { readonly [k in string]: T; };
|
|
9
|
-
export type Entry<T> = readonly [string, T];
|
|
10
1
|
/**
|
|
11
2
|
* @template T
|
|
12
3
|
* @typedef {{
|
|
@@ -18,12 +9,14 @@ export type Entry<T> = readonly [string, T];
|
|
|
18
9
|
* @typedef {readonly[string, T]} Entry
|
|
19
10
|
*/
|
|
20
11
|
/** @type {(name: string) => <T>(object: Map<T>) => T|null} */
|
|
21
|
-
|
|
22
|
-
/** @type {<T>(e:
|
|
23
|
-
|
|
24
|
-
/** @type {<T>(e:
|
|
25
|
-
|
|
26
|
-
/** @type {<T>(m:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
export const at: (name: string) => <T>(object: Map<T>) => T | null;
|
|
13
|
+
/** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
|
|
14
|
+
export const sort: <T>(e: list.List<Entry<T>>) => list.List<Entry<T>>;
|
|
15
|
+
/** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
|
|
16
|
+
export const fromEntries: <T>(e: list.List<Entry<T>>) => Map<T>;
|
|
17
|
+
/** @type {<T>(m: btMap.Map<T>) => Map<T>} */
|
|
18
|
+
export const fromMap: <T>(m: btMap.Map<T>) => Map<T>;
|
|
19
|
+
export type Map<T> = { readonly [k in string]: T; };
|
|
20
|
+
export type Entry<T> = readonly [string, T];
|
|
21
|
+
import * as list from '../list/module.f.mjs';
|
|
22
|
+
import * as btMap from '../map/module.f.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as list from '../list/module.f.mjs'
|
|
3
3
|
const { iterable } = list
|
|
4
|
-
import
|
|
4
|
+
import * as btMap from '../map/module.f.mjs'
|
|
5
5
|
const { entries: mapEntries, fromEntries: mapFromEntries } = btMap
|
|
6
6
|
const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
|
|
7
7
|
|
|
@@ -18,27 +18,16 @@ const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
/** @type {(name: string) => <T>(object: Map<T>) => T|null} */
|
|
21
|
-
const at = name => object => {
|
|
21
|
+
export const at = name => object => {
|
|
22
22
|
const r = getOwnPropertyDescriptor(object, name)
|
|
23
23
|
return r === void 0 ? null : r.value
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
/** @type {<T>(e:
|
|
27
|
-
const sort = e => mapEntries(mapFromEntries(e))
|
|
26
|
+
/** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
|
|
27
|
+
export const sort = e => mapEntries(mapFromEntries(e))
|
|
28
28
|
|
|
29
|
-
/** @type {<T>(e:
|
|
30
|
-
const fromEntries = e => objectFromEntries(iterable(e))
|
|
29
|
+
/** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
|
|
30
|
+
export const fromEntries = e => objectFromEntries(iterable(e))
|
|
31
31
|
|
|
32
|
-
/** @type {<T>(m:
|
|
33
|
-
const fromMap = m => fromEntries(mapEntries(m))
|
|
34
|
-
|
|
35
|
-
export default {
|
|
36
|
-
/** @readonly */
|
|
37
|
-
at,
|
|
38
|
-
/** @readonly */
|
|
39
|
-
sort,
|
|
40
|
-
/** @readonly */
|
|
41
|
-
fromEntries,
|
|
42
|
-
/** @readonly */
|
|
43
|
-
fromMap,
|
|
44
|
-
}
|
|
32
|
+
/** @type {<T>(m: btMap.Map<T>) => Map<T>} */
|
|
33
|
+
export const fromMap = m => fromEntries(mapEntries(m))
|
package/types/object/test.f.mjs
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { contains };
|
|
3
|
-
export { one };
|
|
4
|
-
}
|
|
5
|
-
export default _default;
|
|
6
|
-
export type Range = readonly [number, number];
|
|
7
1
|
/** @typedef {readonly[number,number]} Range */
|
|
8
2
|
/** @type {(range: Range) => (i: number) => boolean} */
|
|
9
|
-
|
|
3
|
+
export const contains: (range: Range) => (i: number) => boolean;
|
|
10
4
|
/** @type {(i: number) => Range} */
|
|
11
|
-
|
|
5
|
+
export const one: (i: number) => Range;
|
|
6
|
+
export type Range = readonly [number, number];
|
package/types/range/module.f.mjs
CHANGED
|
@@ -2,14 +2,7 @@
|
|
|
2
2
|
/** @typedef {readonly[number,number]} Range */
|
|
3
3
|
|
|
4
4
|
/** @type {(range: Range) => (i: number) => boolean} */
|
|
5
|
-
const contains = ([b, e]) => i => b <= i && i <= e
|
|
5
|
+
export const contains = ([b, e]) => i => b <= i && i <= e
|
|
6
6
|
|
|
7
7
|
/** @type {(i: number) => Range} */
|
|
8
|
-
const one = a => [a, a]
|
|
9
|
-
|
|
10
|
-
export default {
|
|
11
|
-
/** @readonly */
|
|
12
|
-
contains,
|
|
13
|
-
/** @readonly */
|
|
14
|
-
one,
|
|
15
|
-
}
|
|
8
|
+
export const one = a => [a, a]
|
package/types/range/test.f.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
export
|
|
1
|
+
/** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
|
|
2
|
+
export const merge: <T>(op: Operators<T>) => RangeMerge<T>;
|
|
3
|
+
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
4
|
+
export const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
|
|
5
|
+
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
6
|
+
export const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
|
|
7
7
|
export type Entry<T> = [T, number];
|
|
8
|
-
export type RangeMap<T> =
|
|
8
|
+
export type RangeMap<T> = sortedList.SortedList<Entry<T>>;
|
|
9
9
|
export type RangeMapArray<T> = readonly Entry<T>[];
|
|
10
10
|
export type Operators<T> = {
|
|
11
11
|
readonly union: O.Reduce<T>;
|
|
@@ -13,13 +13,7 @@ export type Operators<T> = {
|
|
|
13
13
|
};
|
|
14
14
|
export type RangeState<T> = Option.Nullable<Entry<T>>;
|
|
15
15
|
export type RangeMerge<T> = O.Reduce<RangeMap<T>>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
19
|
-
declare const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
|
|
20
|
-
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
21
|
-
declare const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
|
|
22
|
-
import * as SortedList from '../sorted_list/module.f.mjs';
|
|
16
|
+
import * as Range from '../range/module.f.mjs';
|
|
17
|
+
import * as sortedList from '../sorted_list/module.f.mjs';
|
|
23
18
|
import * as O from '../function/operator/module.f.mjs';
|
|
24
19
|
import * as Option from '../nullable/module.f.mjs';
|
|
25
|
-
import * as Range from '../range/module.f.mjs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import
|
|
2
|
+
import * as sortedList from '../sorted_list/module.f.mjs'
|
|
3
3
|
const { genericMerge } = sortedList
|
|
4
|
-
import list from '../list/module.f.mjs'
|
|
4
|
+
import * as list from '../list/module.f.mjs'
|
|
5
5
|
const { next } = list
|
|
6
6
|
import * as Option from '../nullable/module.f.mjs'
|
|
7
|
-
import number from '../number/module.f.mjs'
|
|
7
|
+
import * as number from '../number/module.f.mjs'
|
|
8
8
|
const { cmp } = number
|
|
9
9
|
import * as O from '../function/operator/module.f.mjs'
|
|
10
10
|
import * as Range from '../range/module.f.mjs'
|
|
@@ -16,7 +16,7 @@ import * as Range from '../range/module.f.mjs'
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @template T
|
|
19
|
-
* @typedef {
|
|
19
|
+
* @typedef {sortedList.SortedList<Entry<T>>} RangeMap
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -42,7 +42,7 @@ import * as Range from '../range/module.f.mjs'
|
|
|
42
42
|
* @typedef {O.Reduce<RangeMap<T>>} RangeMerge
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
/** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) =>
|
|
45
|
+
/** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) => sortedList.ReduceOp<Entry<T>, RangeState<T>>} */
|
|
46
46
|
const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) => {
|
|
47
47
|
const sign = cmp(aMax)(bMax)
|
|
48
48
|
const min = sign === 1 ? bMax : aMax
|
|
@@ -51,7 +51,7 @@ const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) =
|
|
|
51
51
|
return [newState, sign, [u, min]]
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/** @type {<T>(equal: O.Equal<T>) =>
|
|
54
|
+
/** @type {<T>(equal: O.Equal<T>) => sortedList.TailReduce<Entry<T>, RangeState<T>>} */
|
|
55
55
|
const tailReduce = equal => state => tail => {
|
|
56
56
|
if (state === null) { return tail }
|
|
57
57
|
const tailResult = next(tail)
|
|
@@ -61,10 +61,10 @@ const tailReduce = equal => state => tail => {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
|
|
64
|
-
const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
|
|
64
|
+
export const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
|
|
65
65
|
|
|
66
66
|
/** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
|
|
67
|
-
const get = def => value => rm => {
|
|
67
|
+
export const get = def => value => rm => {
|
|
68
68
|
const len = rm.length
|
|
69
69
|
let b = 0
|
|
70
70
|
let e = len - 1
|
|
@@ -81,13 +81,4 @@ const get = def => value => rm => {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
|
|
84
|
-
const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]
|
|
85
|
-
|
|
86
|
-
export default {
|
|
87
|
-
/** @readonly */
|
|
88
|
-
merge,
|
|
89
|
-
/** @readonly */
|
|
90
|
-
get,
|
|
91
|
-
/** @readonly */
|
|
92
|
-
fromRange,
|
|
93
|
-
}
|
|
84
|
+
export const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import
|
|
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
|
|
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
|
|
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
|
|
11
|
+
/** @type {(a: readonly json.Unknown[]) => string} */
|
|
12
12
|
const stringify = json.stringify(sort)
|
|
13
13
|
|
|
14
|
-
/** @type {
|
|
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 {
|
|
20
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
21
21
|
const a = [[['a'], 1], [['b'], 2]]
|
|
22
|
-
/** @type {
|
|
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 {
|
|
29
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
30
30
|
const a = null
|
|
31
|
-
/** @type {
|
|
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 {
|
|
38
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
39
39
|
const a = [[['a'], 1], [['b'], 2]]
|
|
40
|
-
/** @type {
|
|
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 {
|
|
47
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
48
48
|
const a = [[['a'], 1], [['c'], 3]]
|
|
49
|
-
/** @type {
|
|
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 {
|
|
56
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
57
57
|
const a = [[['a'], 1], [['d'], 4]]
|
|
58
|
-
/** @type {
|
|
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 {
|
|
65
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
66
66
|
const a = [[['a'], 1], [['b'], 2]]
|
|
67
|
-
/** @type {
|
|
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 {
|
|
74
|
+
/** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
|
|
75
75
|
const a = [[['a'], 1], [['b'], 2], [['a'], 3]]
|
|
76
|
-
/** @type {
|
|
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 {
|
|
84
|
+
/** @type {sortedSet.SortedSet<string>} */
|
|
85
85
|
const sortedSetEmpty = []
|
|
86
86
|
const get = _.get(sortedSetEmpty)
|
|
87
87
|
return [
|
|
88
88
|
() => {
|
|
89
|
-
/** @type {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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) =>
|
|
6
|
-
declare const tryCatch: <T>(f: () => T) =>
|
|
7
|
-
import * as
|
|
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
|
-
|
|
15
|
+
export const ok: <T>(value: T) => Ok<T>;
|
|
25
16
|
/** @type {<E>(e: E) => Error<E>} */
|
|
26
|
-
|
|
17
|
+
export const error: <E>(e: E) => Error<E>;
|
|
27
18
|
/** @type {<T, E>(r: Result<T, E>) => T} */
|
|
28
|
-
|
|
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
|
-
}
|
package/types/result/module.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as result from './module.f.mjs'
|
|
2
2
|
const { ok, error } = result
|
|
3
3
|
|
|
4
|
-
/** @type {<T>(f: () => T) =>
|
|
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 {
|
|
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:
|
|
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:
|
|
54
|
-
|
|
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
|
-
|
|
57
|
-
|
|
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';
|