@zambit/elevate-ts 0.1.2
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/CLA-CORPORATE.md +72 -0
- package/CLA-INDIVIDUAL.md +71 -0
- package/DUAL-PUBLISHING-STRATEGY.md +571 -0
- package/LICENSE +610 -0
- package/README.md +77 -0
- package/dist/cjs/Either.d.ts +67 -0
- package/dist/cjs/Either.d.ts.map +1 -0
- package/dist/cjs/Either.js +147 -0
- package/dist/cjs/Either.js.map +1 -0
- package/dist/cjs/EitherAsync.d.ts +139 -0
- package/dist/cjs/EitherAsync.d.ts.map +1 -0
- package/dist/cjs/EitherAsync.js +171 -0
- package/dist/cjs/EitherAsync.js.map +1 -0
- package/dist/cjs/Function.d.ts +153 -0
- package/dist/cjs/Function.d.ts.map +1 -0
- package/dist/cjs/Function.js +110 -0
- package/dist/cjs/Function.js.map +1 -0
- package/dist/cjs/List.d.ts +134 -0
- package/dist/cjs/List.d.ts.map +1 -0
- package/dist/cjs/List.js +243 -0
- package/dist/cjs/List.js.map +1 -0
- package/dist/cjs/Maybe.d.ts +64 -0
- package/dist/cjs/Maybe.d.ts.map +1 -0
- package/dist/cjs/Maybe.js +122 -0
- package/dist/cjs/Maybe.js.map +1 -0
- package/dist/cjs/MaybeAsync.d.ts +115 -0
- package/dist/cjs/MaybeAsync.d.ts.map +1 -0
- package/dist/cjs/MaybeAsync.js +151 -0
- package/dist/cjs/MaybeAsync.js.map +1 -0
- package/dist/cjs/NonEmptyList.d.ts +86 -0
- package/dist/cjs/NonEmptyList.d.ts.map +1 -0
- package/dist/cjs/NonEmptyList.js +128 -0
- package/dist/cjs/NonEmptyList.js.map +1 -0
- package/dist/cjs/Reader.d.ts +53 -0
- package/dist/cjs/Reader.d.ts.map +1 -0
- package/dist/cjs/Reader.js +60 -0
- package/dist/cjs/Reader.js.map +1 -0
- package/dist/cjs/State.d.ts +71 -0
- package/dist/cjs/State.d.ts.map +1 -0
- package/dist/cjs/State.js +94 -0
- package/dist/cjs/State.js.map +1 -0
- package/dist/cjs/Tuple.d.ts +69 -0
- package/dist/cjs/Tuple.d.ts.map +1 -0
- package/dist/cjs/Tuple.js +73 -0
- package/dist/cjs/Tuple.js.map +1 -0
- package/dist/cjs/Validation.d.ts +53 -0
- package/dist/cjs/Validation.d.ts.map +1 -0
- package/dist/cjs/Validation.js +77 -0
- package/dist/cjs/Validation.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/tokens/config.d.ts +43 -0
- package/dist/cjs/tokens/config.d.ts.map +1 -0
- package/dist/cjs/tokens/config.js +162 -0
- package/dist/cjs/tokens/config.js.map +1 -0
- package/dist/cjs/tokens/cssGen.d.ts +18 -0
- package/dist/cjs/tokens/cssGen.d.ts.map +1 -0
- package/dist/cjs/tokens/cssGen.js +144 -0
- package/dist/cjs/tokens/cssGen.js.map +1 -0
- package/dist/cjs/tokens/generateCSS.d.ts +18 -0
- package/dist/cjs/tokens/generateCSS.d.ts.map +1 -0
- package/dist/cjs/tokens/generateCSS.js +83 -0
- package/dist/cjs/tokens/generateCSS.js.map +1 -0
- package/dist/cjs/tokens/index.d.ts +13 -0
- package/dist/cjs/tokens/index.d.ts.map +1 -0
- package/dist/cjs/tokens/index.js +12 -0
- package/dist/cjs/tokens/index.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Either.d.ts +67 -0
- package/dist/esm/Either.d.ts.map +1 -0
- package/dist/esm/Either.js +136 -0
- package/dist/esm/Either.js.map +1 -0
- package/dist/esm/EitherAsync.d.ts +139 -0
- package/dist/esm/EitherAsync.d.ts.map +1 -0
- package/dist/esm/EitherAsync.js +173 -0
- package/dist/esm/EitherAsync.js.map +1 -0
- package/dist/esm/Function.d.ts +153 -0
- package/dist/esm/Function.d.ts.map +1 -0
- package/dist/esm/Function.js +109 -0
- package/dist/esm/Function.js.map +1 -0
- package/dist/esm/List.d.ts +134 -0
- package/dist/esm/List.d.ts.map +1 -0
- package/dist/esm/List.js +243 -0
- package/dist/esm/List.js.map +1 -0
- package/dist/esm/Maybe.d.ts +64 -0
- package/dist/esm/Maybe.d.ts.map +1 -0
- package/dist/esm/Maybe.js +113 -0
- package/dist/esm/Maybe.js.map +1 -0
- package/dist/esm/MaybeAsync.d.ts +115 -0
- package/dist/esm/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/MaybeAsync.js +150 -0
- package/dist/esm/MaybeAsync.js.map +1 -0
- package/dist/esm/NonEmptyList.d.ts +86 -0
- package/dist/esm/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/NonEmptyList.js +128 -0
- package/dist/esm/NonEmptyList.js.map +1 -0
- package/dist/esm/Reader.d.ts +53 -0
- package/dist/esm/Reader.d.ts.map +1 -0
- package/dist/esm/Reader.js +60 -0
- package/dist/esm/Reader.js.map +1 -0
- package/dist/esm/State.d.ts +71 -0
- package/dist/esm/State.d.ts.map +1 -0
- package/dist/esm/State.js +94 -0
- package/dist/esm/State.js.map +1 -0
- package/dist/esm/Tuple.d.ts +69 -0
- package/dist/esm/Tuple.d.ts.map +1 -0
- package/dist/esm/Tuple.js +73 -0
- package/dist/esm/Tuple.js.map +1 -0
- package/dist/esm/Validation.d.ts +53 -0
- package/dist/esm/Validation.d.ts.map +1 -0
- package/dist/esm/Validation.js +79 -0
- package/dist/esm/Validation.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/src/Either.d.ts +67 -0
- package/dist/esm/src/Either.d.ts.map +1 -0
- package/dist/esm/src/Either.js +147 -0
- package/dist/esm/src/Either.js.map +1 -0
- package/dist/esm/src/EitherAsync.d.ts +139 -0
- package/dist/esm/src/EitherAsync.d.ts.map +1 -0
- package/dist/esm/src/EitherAsync.js +171 -0
- package/dist/esm/src/EitherAsync.js.map +1 -0
- package/dist/esm/src/Function.d.ts +153 -0
- package/dist/esm/src/Function.d.ts.map +1 -0
- package/dist/esm/src/Function.js +110 -0
- package/dist/esm/src/Function.js.map +1 -0
- package/dist/esm/src/List.d.ts +134 -0
- package/dist/esm/src/List.d.ts.map +1 -0
- package/dist/esm/src/List.js +243 -0
- package/dist/esm/src/List.js.map +1 -0
- package/dist/esm/src/Maybe.d.ts +64 -0
- package/dist/esm/src/Maybe.d.ts.map +1 -0
- package/dist/esm/src/Maybe.js +122 -0
- package/dist/esm/src/Maybe.js.map +1 -0
- package/dist/esm/src/MaybeAsync.d.ts +115 -0
- package/dist/esm/src/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/src/MaybeAsync.js +151 -0
- package/dist/esm/src/MaybeAsync.js.map +1 -0
- package/dist/esm/src/NonEmptyList.d.ts +86 -0
- package/dist/esm/src/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/src/NonEmptyList.js +128 -0
- package/dist/esm/src/NonEmptyList.js.map +1 -0
- package/dist/esm/src/Reader.d.ts +53 -0
- package/dist/esm/src/Reader.d.ts.map +1 -0
- package/dist/esm/src/Reader.js +60 -0
- package/dist/esm/src/Reader.js.map +1 -0
- package/dist/esm/src/State.d.ts +71 -0
- package/dist/esm/src/State.d.ts.map +1 -0
- package/dist/esm/src/State.js +94 -0
- package/dist/esm/src/State.js.map +1 -0
- package/dist/esm/src/Tuple.d.ts +69 -0
- package/dist/esm/src/Tuple.d.ts.map +1 -0
- package/dist/esm/src/Tuple.js +73 -0
- package/dist/esm/src/Tuple.js.map +1 -0
- package/dist/esm/src/Validation.d.ts +53 -0
- package/dist/esm/src/Validation.d.ts.map +1 -0
- package/dist/esm/src/Validation.js +77 -0
- package/dist/esm/src/Validation.js.map +1 -0
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +25 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/elevate-ts-vs-effect-critique.md +806 -0
- package/eslint.config.js +104 -0
- package/package.json +139 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity function: returns its input unchanged.
|
|
3
|
+
* @param a - The value to return.
|
|
4
|
+
* @returns The same value.
|
|
5
|
+
*/
|
|
6
|
+
export declare const identity: <A>(a: A) => A;
|
|
7
|
+
/**
|
|
8
|
+
* Create a function that always returns the same value.
|
|
9
|
+
* @param a - The value to return.
|
|
10
|
+
* @returns A function that ignores its input and returns the value.
|
|
11
|
+
*/
|
|
12
|
+
export declare const constant: <A>(a: A) => (() => A);
|
|
13
|
+
/**
|
|
14
|
+
* Flip the first two arguments of a binary function.
|
|
15
|
+
* @param f - A binary function.
|
|
16
|
+
* @returns A function with argument order reversed.
|
|
17
|
+
*/
|
|
18
|
+
export declare const flip: <A, B, C>(f: (a: A, b: B) => C) => ((b: B, a: A) => C);
|
|
19
|
+
/**
|
|
20
|
+
* Absurd: a function that takes a never value.
|
|
21
|
+
* @param a - A value of type never (should never be called).
|
|
22
|
+
* @returns A value of any type (unreachable).
|
|
23
|
+
*/
|
|
24
|
+
export declare const absurd: <A>(_: never) => A;
|
|
25
|
+
/**
|
|
26
|
+
* Pipe a value through a chain of functions (arity 1).
|
|
27
|
+
* @param a - The initial value.
|
|
28
|
+
* @param f1 - The first function.
|
|
29
|
+
* @returns The result of f1(a).
|
|
30
|
+
*/
|
|
31
|
+
export declare function pipe<A, B>(a: A, f1: (a: A) => B): B;
|
|
32
|
+
/**
|
|
33
|
+
* Pipe a value through a chain of functions (arity 2).
|
|
34
|
+
* @param a - The initial value.
|
|
35
|
+
* @param f1 - The first function.
|
|
36
|
+
* @param f2 - The second function.
|
|
37
|
+
* @returns The result of f2(f1(a)).
|
|
38
|
+
*/
|
|
39
|
+
export declare function pipe<A, B, C>(a: A, f1: (a: A) => B, f2: (b: B) => C): C;
|
|
40
|
+
/**
|
|
41
|
+
* Pipe a value through a chain of functions (arity 3).
|
|
42
|
+
*/
|
|
43
|
+
export declare function pipe<A, B, C, D>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D): D;
|
|
44
|
+
/**
|
|
45
|
+
* Pipe a value through a chain of functions (arity 4).
|
|
46
|
+
*/
|
|
47
|
+
export declare function pipe<A, B, C, D, E>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E): E;
|
|
48
|
+
/**
|
|
49
|
+
* Pipe a value through a chain of functions (arity 5).
|
|
50
|
+
*/
|
|
51
|
+
export declare function pipe<A, B, C, D, E, F>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F): F;
|
|
52
|
+
/**
|
|
53
|
+
* Pipe a value through a chain of functions (arity 6).
|
|
54
|
+
*/
|
|
55
|
+
export declare function pipe<A, B, C, D, E, F, G>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G): G;
|
|
56
|
+
/**
|
|
57
|
+
* Pipe a value through a chain of functions (arity 7).
|
|
58
|
+
*/
|
|
59
|
+
export declare function pipe<A, B, C, D, E, F, G, H>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H): H;
|
|
60
|
+
/**
|
|
61
|
+
* Pipe a value through a chain of functions (arity 8).
|
|
62
|
+
*/
|
|
63
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I): I;
|
|
64
|
+
/**
|
|
65
|
+
* Pipe a value through a chain of functions (arity 9).
|
|
66
|
+
*/
|
|
67
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J): J;
|
|
68
|
+
/**
|
|
69
|
+
* Pipe a value through a chain of functions (arity 10).
|
|
70
|
+
*/
|
|
71
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J, f10: (j: J) => K): K;
|
|
72
|
+
/**
|
|
73
|
+
* Compose functions left-to-right (arity 1).
|
|
74
|
+
* @param f1 - The first function.
|
|
75
|
+
* @returns A function that applies f1.
|
|
76
|
+
*/
|
|
77
|
+
export declare function flow<A, B>(f1: (a: A) => B): (a: A) => B;
|
|
78
|
+
/**
|
|
79
|
+
* Compose functions left-to-right (arity 2).
|
|
80
|
+
* @param f1 - The first function.
|
|
81
|
+
* @param f2 - The second function.
|
|
82
|
+
* @returns A function that applies f1 then f2.
|
|
83
|
+
*/
|
|
84
|
+
export declare function flow<A, B, C>(f1: (a: A) => B, f2: (b: B) => C): (a: A) => C;
|
|
85
|
+
/**
|
|
86
|
+
* Compose functions left-to-right (arity 3).
|
|
87
|
+
*/
|
|
88
|
+
export declare function flow<A, B, C, D>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D): (a: A) => D;
|
|
89
|
+
/**
|
|
90
|
+
* Compose functions left-to-right (arity 4).
|
|
91
|
+
*/
|
|
92
|
+
export declare function flow<A, B, C, D, E>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E): (a: A) => E;
|
|
93
|
+
/**
|
|
94
|
+
* Compose functions left-to-right (arity 5).
|
|
95
|
+
*/
|
|
96
|
+
export declare function flow<A, B, C, D, E, F>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F): (a: A) => F;
|
|
97
|
+
/**
|
|
98
|
+
* Compose functions left-to-right (arity 6).
|
|
99
|
+
*/
|
|
100
|
+
export declare function flow<A, B, C, D, E, F, G>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G): (a: A) => G;
|
|
101
|
+
/**
|
|
102
|
+
* Compose functions left-to-right (arity 7).
|
|
103
|
+
*/
|
|
104
|
+
export declare function flow<A, B, C, D, E, F, G, H>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H): (a: A) => H;
|
|
105
|
+
/**
|
|
106
|
+
* Compose functions left-to-right (arity 8).
|
|
107
|
+
*/
|
|
108
|
+
export declare function flow<A, B, C, D, E, F, G, H, I>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I): (a: A) => I;
|
|
109
|
+
/**
|
|
110
|
+
* Compose functions left-to-right (arity 9).
|
|
111
|
+
*/
|
|
112
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J): (a: A) => J;
|
|
113
|
+
/**
|
|
114
|
+
* Compose functions left-to-right (arity 10).
|
|
115
|
+
*/
|
|
116
|
+
export declare function flow<A, B, C, D, E, F, G, H, I, J, K>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J, f10: (j: J) => K): (a: A) => K;
|
|
117
|
+
/**
|
|
118
|
+
* Curry a 2-argument function.
|
|
119
|
+
* @param f - A binary function.
|
|
120
|
+
* @returns A curried function.
|
|
121
|
+
*/
|
|
122
|
+
export declare const curry2: <A, B, C>(f: (a: A, b: B) => C) => ((a: A) => (b: B) => C);
|
|
123
|
+
/**
|
|
124
|
+
* Curry a 3-argument function.
|
|
125
|
+
* @param f - A ternary function.
|
|
126
|
+
* @returns A curried function.
|
|
127
|
+
*/
|
|
128
|
+
export declare const curry3: <A, B, C, D>(f: (a: A, b: B, c: C) => D) => ((a: A) => (b: B) => (c: C) => D);
|
|
129
|
+
/**
|
|
130
|
+
* Curry a 4-argument function.
|
|
131
|
+
* @param f - A 4-argument function.
|
|
132
|
+
* @returns A curried function.
|
|
133
|
+
*/
|
|
134
|
+
export declare const curry4: <A, B, C, D, E>(f: (a: A, b: B, c: C, d: D) => E) => ((a: A) => (b: B) => (c: C) => (d: D) => E);
|
|
135
|
+
/**
|
|
136
|
+
* Memoize a function with single-level cache.
|
|
137
|
+
* @param f - The function to memoize.
|
|
138
|
+
* @returns A memoized function.
|
|
139
|
+
*/
|
|
140
|
+
export declare const memoize: <A, B>(f: (a: A) => B) => ((a: A) => B);
|
|
141
|
+
/**
|
|
142
|
+
* Execute a function at most once; cache the result.
|
|
143
|
+
* @param f - The function to execute once.
|
|
144
|
+
* @returns A function that returns the cached result on all calls.
|
|
145
|
+
*/
|
|
146
|
+
export declare const once: <A, B>(f: (a: A) => B) => ((a: A) => B);
|
|
147
|
+
/**
|
|
148
|
+
* Execute a side effect and pass the value through.
|
|
149
|
+
* @param f - A side-effect function.
|
|
150
|
+
* @returns A function that executes the side effect and returns its input.
|
|
151
|
+
*/
|
|
152
|
+
export declare const tap: <A>(f: (a: A) => void) => ((a: A) => A);
|
|
153
|
+
//# sourceMappingURL=Function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Function — Composition and Utilities
|
|
2
|
+
/**
|
|
3
|
+
* Identity function: returns its input unchanged.
|
|
4
|
+
* @param a - The value to return.
|
|
5
|
+
* @returns The same value.
|
|
6
|
+
*/
|
|
7
|
+
export const identity = (a) => a;
|
|
8
|
+
/**
|
|
9
|
+
* Create a function that always returns the same value.
|
|
10
|
+
* @param a - The value to return.
|
|
11
|
+
* @returns A function that ignores its input and returns the value.
|
|
12
|
+
*/
|
|
13
|
+
export const constant = (a) => () => a;
|
|
14
|
+
/**
|
|
15
|
+
* Flip the first two arguments of a binary function.
|
|
16
|
+
* @param f - A binary function.
|
|
17
|
+
* @returns A function with argument order reversed.
|
|
18
|
+
*/
|
|
19
|
+
export const flip = (f) => (b, a) => f(a, b);
|
|
20
|
+
/**
|
|
21
|
+
* Absurd: a function that takes a never value.
|
|
22
|
+
* @param a - A value of type never (should never be called).
|
|
23
|
+
* @returns A value of any type (unreachable).
|
|
24
|
+
*/
|
|
25
|
+
export const absurd = (_) => {
|
|
26
|
+
throw new Error('absurd: unreachable');
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Pipe implementation.
|
|
30
|
+
*/
|
|
31
|
+
export function pipe(a, ...fns) {
|
|
32
|
+
let result = a;
|
|
33
|
+
for (const fn of fns) {
|
|
34
|
+
result = fn(result);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Flow implementation.
|
|
40
|
+
*/
|
|
41
|
+
export function flow(...fns) {
|
|
42
|
+
return (a) => {
|
|
43
|
+
let result = a;
|
|
44
|
+
for (const fn of fns) {
|
|
45
|
+
result = fn(result);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Curry a 2-argument function.
|
|
52
|
+
* @param f - A binary function.
|
|
53
|
+
* @returns A curried function.
|
|
54
|
+
*/
|
|
55
|
+
export const curry2 = (f) => (a) => (b) => f(a, b);
|
|
56
|
+
/**
|
|
57
|
+
* Curry a 3-argument function.
|
|
58
|
+
* @param f - A ternary function.
|
|
59
|
+
* @returns A curried function.
|
|
60
|
+
*/
|
|
61
|
+
export const curry3 = (f) => (a) => (b) => (c) => f(a, b, c);
|
|
62
|
+
/**
|
|
63
|
+
* Curry a 4-argument function.
|
|
64
|
+
* @param f - A 4-argument function.
|
|
65
|
+
* @returns A curried function.
|
|
66
|
+
*/
|
|
67
|
+
export const curry4 = (f) => (a) => (b) => (c) => (d) => f(a, b, c, d);
|
|
68
|
+
/**
|
|
69
|
+
* Memoize a function with single-level cache.
|
|
70
|
+
* @param f - The function to memoize.
|
|
71
|
+
* @returns A memoized function.
|
|
72
|
+
*/
|
|
73
|
+
export const memoize = (f) => {
|
|
74
|
+
const cache = new Map();
|
|
75
|
+
return (a) => {
|
|
76
|
+
const cached = cache.get(a);
|
|
77
|
+
if (cached !== undefined) {
|
|
78
|
+
return cached;
|
|
79
|
+
}
|
|
80
|
+
const result = f(a);
|
|
81
|
+
cache.set(a, result);
|
|
82
|
+
return result;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Execute a function at most once; cache the result.
|
|
87
|
+
* @param f - The function to execute once.
|
|
88
|
+
* @returns A function that returns the cached result on all calls.
|
|
89
|
+
*/
|
|
90
|
+
export const once = (f) => {
|
|
91
|
+
let called = false;
|
|
92
|
+
let result;
|
|
93
|
+
return (a) => {
|
|
94
|
+
if (!called) {
|
|
95
|
+
result = f(a);
|
|
96
|
+
called = true;
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Execute a side effect and pass the value through.
|
|
103
|
+
* @param f - A side-effect function.
|
|
104
|
+
* @returns A function that executes the side effect and returns its input.
|
|
105
|
+
*/
|
|
106
|
+
export const tap = (f) => (a) => {
|
|
107
|
+
f(a);
|
|
108
|
+
return a;
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=Function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as Maybe from './Maybe.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get the first element of an array.
|
|
4
|
+
* @param arr - The array.
|
|
5
|
+
* @returns The first element or undefined if empty.
|
|
6
|
+
*/
|
|
7
|
+
export declare const head: <A>(arr: readonly A[]) => A | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Get all but the first element.
|
|
10
|
+
* @param arr - The array.
|
|
11
|
+
* @returns An array of remaining elements.
|
|
12
|
+
*/
|
|
13
|
+
export declare const tail: <A>(arr: readonly A[]) => readonly A[];
|
|
14
|
+
/**
|
|
15
|
+
* Get the last element of an array.
|
|
16
|
+
* @param arr - The array.
|
|
17
|
+
* @returns The last element or undefined if empty.
|
|
18
|
+
*/
|
|
19
|
+
export declare const last: <A>(arr: readonly A[]) => A | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Get all but the last element.
|
|
22
|
+
* @param arr - The array.
|
|
23
|
+
* @returns An array of all but the last element.
|
|
24
|
+
*/
|
|
25
|
+
export declare const init: <A>(arr: readonly A[]) => readonly A[];
|
|
26
|
+
/**
|
|
27
|
+
* Deconstruct an array into head and tail.
|
|
28
|
+
* @param arr - The array.
|
|
29
|
+
* @returns Just [head, tail] if nonempty, Nothing if empty.
|
|
30
|
+
*/
|
|
31
|
+
export declare const uncons: <A>(arr: readonly A[]) => Maybe.Maybe<readonly [A, readonly A[]]>;
|
|
32
|
+
/**
|
|
33
|
+
* Prepend an element to an array.
|
|
34
|
+
* @param a - The element to prepend.
|
|
35
|
+
* @returns A function that takes an array and returns the new array.
|
|
36
|
+
*/
|
|
37
|
+
export declare const cons: <A>(a: A) => ((arr: readonly A[]) => readonly A[]);
|
|
38
|
+
/**
|
|
39
|
+
* Append an element to an array.
|
|
40
|
+
* @param a - The element to append.
|
|
41
|
+
* @returns A function that takes an array and returns the new array.
|
|
42
|
+
*/
|
|
43
|
+
export declare const snoc: <A>(a: A) => ((arr: readonly A[]) => readonly A[]);
|
|
44
|
+
/**
|
|
45
|
+
* Take the first n elements.
|
|
46
|
+
* @param n - The number of elements to take.
|
|
47
|
+
* @returns A function that takes an array and returns the first n elements.
|
|
48
|
+
*/
|
|
49
|
+
export declare const take: <A>(n: number) => ((arr: readonly A[]) => readonly A[]);
|
|
50
|
+
/**
|
|
51
|
+
* Drop the first n elements.
|
|
52
|
+
* @param n - The number of elements to drop.
|
|
53
|
+
* @returns A function that takes an array and returns the remaining elements.
|
|
54
|
+
*/
|
|
55
|
+
export declare const drop: <A>(n: number) => ((arr: readonly A[]) => readonly A[]);
|
|
56
|
+
/**
|
|
57
|
+
* Take elements while predicate holds.
|
|
58
|
+
* @param predicate - The predicate to test.
|
|
59
|
+
* @returns A function that takes an array and returns elements taken while predicate holds.
|
|
60
|
+
*/
|
|
61
|
+
export declare const takeWhile: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
|
|
62
|
+
/**
|
|
63
|
+
* Drop elements while predicate holds.
|
|
64
|
+
* @param predicate - The predicate to test.
|
|
65
|
+
* @returns A function that takes an array and returns remaining elements.
|
|
66
|
+
*/
|
|
67
|
+
export declare const dropWhile: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
|
|
68
|
+
/**
|
|
69
|
+
* Partition an array into two based on a predicate.
|
|
70
|
+
* @param predicate - The predicate to split on.
|
|
71
|
+
* @returns A function that takes an array and returns [matching, nonmatching].
|
|
72
|
+
*/
|
|
73
|
+
export declare const partition: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly [readonly A[], readonly A[]]);
|
|
74
|
+
/**
|
|
75
|
+
* Split an array at the first element that fails the predicate.
|
|
76
|
+
* @param predicate - The predicate to test.
|
|
77
|
+
* @returns A function that takes an array and returns [taken, dropped].
|
|
78
|
+
*/
|
|
79
|
+
export declare const span: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly [readonly A[], readonly A[]]);
|
|
80
|
+
/**
|
|
81
|
+
* Group consecutive equal elements.
|
|
82
|
+
* @param eq - Equality comparator.
|
|
83
|
+
* @returns A function that takes an array and returns grouped elements.
|
|
84
|
+
*/
|
|
85
|
+
export declare const groupBy: <A>(eq: (a: A, b: A) => boolean) => ((arr: readonly A[]) => readonly (readonly A[])[]);
|
|
86
|
+
/**
|
|
87
|
+
* Remove consecutive duplicates.
|
|
88
|
+
* @param eq - Equality comparator.
|
|
89
|
+
* @returns A function that takes an array and returns array without consecutive duplicates.
|
|
90
|
+
*/
|
|
91
|
+
export declare const nubBy: <A>(eq: (a: A, b: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
|
|
92
|
+
/**
|
|
93
|
+
* Sort an array with a comparator function.
|
|
94
|
+
* @param ord - Comparator function (negative if a < b, positive if a > b).
|
|
95
|
+
* @returns A function that takes an array and returns a sorted array.
|
|
96
|
+
*/
|
|
97
|
+
export declare const sortBy: <A>(ord: (a: A, b: A) => number) => ((arr: readonly A[]) => readonly A[]);
|
|
98
|
+
/**
|
|
99
|
+
* Zip two arrays into pairs.
|
|
100
|
+
* @param arr2 - The second array.
|
|
101
|
+
* @returns A function taking first array, returning [pairs, remainders].
|
|
102
|
+
*/
|
|
103
|
+
export declare const zip: <A, B>(arr2: readonly B[]) => (arr1: readonly A[]) => readonly [[A, B][], A[] | B[]];
|
|
104
|
+
/**
|
|
105
|
+
* Zip two arrays with a function.
|
|
106
|
+
* @param f - Function to apply to pairs.
|
|
107
|
+
* @returns A function taking the second array, then first array, returning results.
|
|
108
|
+
*/
|
|
109
|
+
export declare const zipWith: <A, B, C>(f: (a: A, b: B) => C) => ((arr2: readonly B[]) => (arr1: readonly A[]) => readonly C[]);
|
|
110
|
+
/**
|
|
111
|
+
* Unzip an array of pairs into two arrays.
|
|
112
|
+
* @param pairs - Array of pairs.
|
|
113
|
+
* @returns A tuple of two arrays.
|
|
114
|
+
*/
|
|
115
|
+
export declare const unzip: <A, B>(pairs: readonly (readonly [A, B])[]) => readonly [readonly A[], readonly B[]];
|
|
116
|
+
/**
|
|
117
|
+
* Flatten one level of nesting.
|
|
118
|
+
* @param arr - Array of arrays.
|
|
119
|
+
* @returns A flattened array.
|
|
120
|
+
*/
|
|
121
|
+
export declare const flatten: <A>(arr: readonly (readonly A[])[]) => readonly A[];
|
|
122
|
+
/**
|
|
123
|
+
* Insert a separator between elements.
|
|
124
|
+
* @param sep - The separator element.
|
|
125
|
+
* @returns A function that takes an array and returns interspersed array.
|
|
126
|
+
*/
|
|
127
|
+
export declare const intersperse: <A>(sep: A) => ((arr: readonly A[]) => readonly A[]);
|
|
128
|
+
/**
|
|
129
|
+
* Transpose a matrix (2D array).
|
|
130
|
+
* @param matrix - A matrix as array of arrays.
|
|
131
|
+
* @returns The transposed matrix.
|
|
132
|
+
*/
|
|
133
|
+
export declare const transpose: <A>(matrix: readonly (readonly A[])[]) => readonly (readonly A[])[];
|
|
134
|
+
//# sourceMappingURL=List.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/List.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/List.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// List — Array Utilities
|
|
2
|
+
import * as Maybe from './Maybe.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the first element of an array.
|
|
5
|
+
* @param arr - The array.
|
|
6
|
+
* @returns The first element or undefined if empty.
|
|
7
|
+
*/
|
|
8
|
+
export const head = (arr) => arr[0];
|
|
9
|
+
/**
|
|
10
|
+
* Get all but the first element.
|
|
11
|
+
* @param arr - The array.
|
|
12
|
+
* @returns An array of remaining elements.
|
|
13
|
+
*/
|
|
14
|
+
export const tail = (arr) => arr.slice(1);
|
|
15
|
+
/**
|
|
16
|
+
* Get the last element of an array.
|
|
17
|
+
* @param arr - The array.
|
|
18
|
+
* @returns The last element or undefined if empty.
|
|
19
|
+
*/
|
|
20
|
+
export const last = (arr) => (arr.length > 0 ? arr[arr.length - 1] : undefined);
|
|
21
|
+
/**
|
|
22
|
+
* Get all but the last element.
|
|
23
|
+
* @param arr - The array.
|
|
24
|
+
* @returns An array of all but the last element.
|
|
25
|
+
*/
|
|
26
|
+
export const init = (arr) => (arr.length > 0 ? arr.slice(0, -1) : []);
|
|
27
|
+
/**
|
|
28
|
+
* Deconstruct an array into head and tail.
|
|
29
|
+
* @param arr - The array.
|
|
30
|
+
* @returns Just [head, tail] if nonempty, Nothing if empty.
|
|
31
|
+
*/
|
|
32
|
+
export const uncons = (arr) => (arr.length > 0 ? Maybe.Just([arr[0], arr.slice(1)]) : Maybe.Nothing);
|
|
33
|
+
/**
|
|
34
|
+
* Prepend an element to an array.
|
|
35
|
+
* @param a - The element to prepend.
|
|
36
|
+
* @returns A function that takes an array and returns the new array.
|
|
37
|
+
*/
|
|
38
|
+
export const cons = (a) => (arr) => [a, ...arr];
|
|
39
|
+
/**
|
|
40
|
+
* Append an element to an array.
|
|
41
|
+
* @param a - The element to append.
|
|
42
|
+
* @returns A function that takes an array and returns the new array.
|
|
43
|
+
*/
|
|
44
|
+
export const snoc = (a) => (arr) => [...arr, a];
|
|
45
|
+
/**
|
|
46
|
+
* Take the first n elements.
|
|
47
|
+
* @param n - The number of elements to take.
|
|
48
|
+
* @returns A function that takes an array and returns the first n elements.
|
|
49
|
+
*/
|
|
50
|
+
export const take = (n) => (arr) => arr.slice(0, n);
|
|
51
|
+
/**
|
|
52
|
+
* Drop the first n elements.
|
|
53
|
+
* @param n - The number of elements to drop.
|
|
54
|
+
* @returns A function that takes an array and returns the remaining elements.
|
|
55
|
+
*/
|
|
56
|
+
export const drop = (n) => (arr) => arr.slice(n);
|
|
57
|
+
/**
|
|
58
|
+
* Take elements while predicate holds.
|
|
59
|
+
* @param predicate - The predicate to test.
|
|
60
|
+
* @returns A function that takes an array and returns elements taken while predicate holds.
|
|
61
|
+
*/
|
|
62
|
+
export const takeWhile = (predicate) => (arr) => {
|
|
63
|
+
let i = 0;
|
|
64
|
+
while (i < arr.length && predicate(arr[i]))
|
|
65
|
+
i++;
|
|
66
|
+
return arr.slice(0, i);
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Drop elements while predicate holds.
|
|
70
|
+
* @param predicate - The predicate to test.
|
|
71
|
+
* @returns A function that takes an array and returns remaining elements.
|
|
72
|
+
*/
|
|
73
|
+
export const dropWhile = (predicate) => (arr) => {
|
|
74
|
+
let i = 0;
|
|
75
|
+
while (i < arr.length && predicate(arr[i]))
|
|
76
|
+
i++;
|
|
77
|
+
return arr.slice(i);
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Partition an array into two based on a predicate.
|
|
81
|
+
* @param predicate - The predicate to split on.
|
|
82
|
+
* @returns A function that takes an array and returns [matching, nonmatching].
|
|
83
|
+
*/
|
|
84
|
+
export const partition = (predicate) => (arr) => {
|
|
85
|
+
const left = [];
|
|
86
|
+
const right = [];
|
|
87
|
+
for (const a of arr) {
|
|
88
|
+
if (predicate(a)) {
|
|
89
|
+
left.push(a);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
right.push(a);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return [left, right];
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Split an array at the first element that fails the predicate.
|
|
99
|
+
* @param predicate - The predicate to test.
|
|
100
|
+
* @returns A function that takes an array and returns [taken, dropped].
|
|
101
|
+
*/
|
|
102
|
+
export const span = (predicate) => (arr) => {
|
|
103
|
+
let i = 0;
|
|
104
|
+
while (i < arr.length && predicate(arr[i]))
|
|
105
|
+
i++;
|
|
106
|
+
return [arr.slice(0, i), arr.slice(i)];
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Group consecutive equal elements.
|
|
110
|
+
* @param eq - Equality comparator.
|
|
111
|
+
* @returns A function that takes an array and returns grouped elements.
|
|
112
|
+
*/
|
|
113
|
+
export const groupBy = (eq) => (arr) => {
|
|
114
|
+
if (arr.length === 0)
|
|
115
|
+
return [];
|
|
116
|
+
const groups = [];
|
|
117
|
+
let current = [arr[0]];
|
|
118
|
+
for (let i = 1; i < arr.length; i++) {
|
|
119
|
+
if (eq(arr[i], arr[i - 1])) {
|
|
120
|
+
current.push(arr[i]);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
groups.push(current);
|
|
124
|
+
current = [arr[i]];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
groups.push(current);
|
|
128
|
+
return groups;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Remove consecutive duplicates.
|
|
132
|
+
* @param eq - Equality comparator.
|
|
133
|
+
* @returns A function that takes an array and returns array without consecutive duplicates.
|
|
134
|
+
*/
|
|
135
|
+
export const nubBy = (eq) => (arr) => {
|
|
136
|
+
if (arr.length === 0)
|
|
137
|
+
return [];
|
|
138
|
+
const result = [arr[0]];
|
|
139
|
+
for (let i = 1; i < arr.length; i++) {
|
|
140
|
+
if (!eq(arr[i], arr[i - 1])) {
|
|
141
|
+
result.push(arr[i]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Sort an array with a comparator function.
|
|
148
|
+
* @param ord - Comparator function (negative if a < b, positive if a > b).
|
|
149
|
+
* @returns A function that takes an array and returns a sorted array.
|
|
150
|
+
*/
|
|
151
|
+
export const sortBy = (ord) => (arr) => [...arr].sort(ord);
|
|
152
|
+
/**
|
|
153
|
+
* Zip two arrays into pairs.
|
|
154
|
+
* @param arr2 - The second array.
|
|
155
|
+
* @returns A function taking first array, returning [pairs, remainders].
|
|
156
|
+
*/
|
|
157
|
+
export const zip = (arr2) => (arr1) => {
|
|
158
|
+
const len = Math.min(arr1.length, arr2.length);
|
|
159
|
+
const pairs = [];
|
|
160
|
+
for (let i = 0; i < len; i++) {
|
|
161
|
+
pairs.push([arr1[i], arr2[i]]);
|
|
162
|
+
}
|
|
163
|
+
const remainder = arr1.length > arr2.length ? arr1.slice(len) : arr2.slice(len);
|
|
164
|
+
return [pairs, remainder];
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Zip two arrays with a function.
|
|
168
|
+
* @param f - Function to apply to pairs.
|
|
169
|
+
* @returns A function taking the second array, then first array, returning results.
|
|
170
|
+
*/
|
|
171
|
+
export const zipWith = (f) => (arr2) => (arr1) => {
|
|
172
|
+
const len = Math.min(arr1.length, arr2.length);
|
|
173
|
+
const result = [];
|
|
174
|
+
for (let i = 0; i < len; i++) {
|
|
175
|
+
result.push(f(arr1[i], arr2[i]));
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Unzip an array of pairs into two arrays.
|
|
181
|
+
* @param pairs - Array of pairs.
|
|
182
|
+
* @returns A tuple of two arrays.
|
|
183
|
+
*/
|
|
184
|
+
export const unzip = (pairs) => {
|
|
185
|
+
const as = [];
|
|
186
|
+
const bs = [];
|
|
187
|
+
for (const [a, b] of pairs) {
|
|
188
|
+
as.push(a);
|
|
189
|
+
bs.push(b);
|
|
190
|
+
}
|
|
191
|
+
return [as, bs];
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Flatten one level of nesting.
|
|
195
|
+
* @param arr - Array of arrays.
|
|
196
|
+
* @returns A flattened array.
|
|
197
|
+
*/
|
|
198
|
+
export const flatten = (arr) => {
|
|
199
|
+
const result = [];
|
|
200
|
+
for (const sub of arr) {
|
|
201
|
+
for (const a of sub) {
|
|
202
|
+
result.push(a);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return result;
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* Insert a separator between elements.
|
|
209
|
+
* @param sep - The separator element.
|
|
210
|
+
* @returns A function that takes an array and returns interspersed array.
|
|
211
|
+
*/
|
|
212
|
+
export const intersperse = (sep) => (arr) => {
|
|
213
|
+
if (arr.length === 0)
|
|
214
|
+
return [];
|
|
215
|
+
const result = [arr[0]];
|
|
216
|
+
for (let i = 1; i < arr.length; i++) {
|
|
217
|
+
result.push(sep);
|
|
218
|
+
result.push(arr[i]);
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Transpose a matrix (2D array).
|
|
224
|
+
* @param matrix - A matrix as array of arrays.
|
|
225
|
+
* @returns The transposed matrix.
|
|
226
|
+
*/
|
|
227
|
+
export const transpose = (matrix) => {
|
|
228
|
+
if (matrix.length === 0)
|
|
229
|
+
return [];
|
|
230
|
+
const maxLen = Math.max(...matrix.map((row) => row.length));
|
|
231
|
+
const result = [];
|
|
232
|
+
for (let col = 0; col < maxLen; col++) {
|
|
233
|
+
const row = [];
|
|
234
|
+
for (let rowIdx = 0; rowIdx < matrix.length; rowIdx++) {
|
|
235
|
+
if (col < matrix[rowIdx].length) {
|
|
236
|
+
row.push(matrix[rowIdx][col]);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
result.push(row);
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
};
|
|
243
|
+
//# sourceMappingURL=List.js.map
|