functionalscript 0.0.228 → 0.0.232
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/commonjs/index.js +11 -0
- package/commonjs/path/index.js +64 -0
- package/commonjs/path/test.js +47 -0
- package/commonjs/run/index.js +17 -0
- package/io/commonjs/index.js +34 -0
- package/io/commonjs/test.js +72 -0
- package/json/index.js +22 -26
- package/json/test.js +9 -9
- package/package.json +23 -23
- package/test.js +4 -6
- package/{sequence → types}/array/index.js +2 -2
- package/{btree → types/btree}/README.md +0 -0
- package/{btree → types/btree}/index.js +6 -6
- package/{btree → types/btree}/test.js +1 -1
- package/{cmp → types/function/compare}/index.js +6 -6
- package/{function → types/function}/index.js +0 -0
- package/{function → types/function}/operator/index.js +15 -0
- package/{map → types/map}/index.js +3 -3
- package/{map → types/map}/test.js +0 -0
- package/{object → types/object}/index.js +1 -2
- package/{object → types/object}/test.js +0 -0
- package/{option → types/option}/index.js +0 -0
- package/types/result/index.js +28 -0
- package/{sequence → types/sequence}/README.md +0 -0
- package/{sequence → types/sequence}/index.js +117 -60
- package/{sequence → types/sequence}/test.js +148 -11
- package/version.js +2 -2
- package/module-manager/README.md +0 -35
- package/module-manager/index.js +0 -110
- package/module-manager/node/index.js +0 -18
- package/module-manager/node/test.js +0 -75
- package/module-manager/test.js +0 -120
- package/result/index.js +0 -17
- package/sequence/asyncIterable/index.js +0 -111
- package/sequence/asyncIterable/test.js +0 -24
- package/sequence/iterable/index.js +0 -109
- package/sequence/iterable/test.js +0 -51
- package/sequence/operator/index.js +0 -92
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
const op = require('../../function/operator')
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @template T0
|
|
5
|
-
* @template T1
|
|
6
|
-
* @typedef {import('../array').Tuple2<T0, T1>} Tuple2
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @template T
|
|
11
|
-
* @template R
|
|
12
|
-
* @typedef {Tuple2<R, Scan<T, R>>} ScanResult
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @template T
|
|
17
|
-
* @template R
|
|
18
|
-
* @typedef {(value: T) => ScanResult<T, R>} Scan
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @template T
|
|
23
|
-
* @template R
|
|
24
|
-
* @typedef {Tuple2<R, Scan<T, R>>} ExclusiveScan
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
/** @type {<R, T>(operator: op.ReduceOperator<R, T>) => (prior: R) => Scan<T, R>} */
|
|
28
|
-
const scan = operator => {
|
|
29
|
-
/** @typedef {typeof operator extends op.ReduceOperator<infer R, infer T> ? [R, T] : never} RT */
|
|
30
|
-
/** @typedef {RT[0]} R */
|
|
31
|
-
/** @typedef {RT[1]} T */
|
|
32
|
-
/** @type {(prior: R) => Scan<T, R>} */
|
|
33
|
-
const f = prior => value => {
|
|
34
|
-
const result = operator(prior)(value)
|
|
35
|
-
return [result, f(result)]
|
|
36
|
-
}
|
|
37
|
-
return f
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** @type {<R, T>(operator: op.ReduceOperator<R, T>) => (first: R) => ExclusiveScan<T, R>} */
|
|
41
|
-
const exclusiveScan = operator => first => [first, scan(operator)(first)]
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @template T
|
|
45
|
-
* @typedef {Tuple2<number, T>} Entry
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
/** @type {(index: number) => <T>(value: T) => ScanResult<T, Entry<T>>} */
|
|
49
|
-
const createEntries = index => value => [[index, value], createEntries(index + 1)]
|
|
50
|
-
|
|
51
|
-
const entries = createEntries(0)
|
|
52
|
-
|
|
53
|
-
/** @type {(separator: string) => ExclusiveScan<string, string>} */
|
|
54
|
-
const join = separator => ['', value => [value, scan(op.join(separator))(value)]]
|
|
55
|
-
|
|
56
|
-
const sum = exclusiveScan(op.addition)(0)
|
|
57
|
-
|
|
58
|
-
/** @type {(a: number) => () => number} */
|
|
59
|
-
const counter = a => () => a + 1
|
|
60
|
-
|
|
61
|
-
const length = exclusiveScan(counter)(0)
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @template T
|
|
65
|
-
* @template R
|
|
66
|
-
* @typedef {(value: T) => R} Func
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
/** @type {<T, R, X>(flatMap: (f: Func<T, readonly[R]>) => X) => (f: Func<T, R>) =>X} */
|
|
70
|
-
const map = flatMap => f => flatMap(x => [f(x)])
|
|
71
|
-
|
|
72
|
-
/** @type {<T, X>(flatMap: (f: Func<T, readonly[T]|[]>) => X) => (f: Func<T, boolean>) =>X} */
|
|
73
|
-
const filter = flatMap => f => flatMap(x => f(x) ? [x] : [])
|
|
74
|
-
|
|
75
|
-
module.exports = {
|
|
76
|
-
/** @readonly */
|
|
77
|
-
exclusiveScan,
|
|
78
|
-
/** @readonly */
|
|
79
|
-
scan,
|
|
80
|
-
/** @readonly */
|
|
81
|
-
join,
|
|
82
|
-
/** @readonly */
|
|
83
|
-
sum,
|
|
84
|
-
/** @readonly */
|
|
85
|
-
length,
|
|
86
|
-
/** @readonly */
|
|
87
|
-
entries,
|
|
88
|
-
/** @readonly */
|
|
89
|
-
map,
|
|
90
|
-
/** @readonly */
|
|
91
|
-
filter,
|
|
92
|
-
}
|