@@ -119,25 +119,27 @@ public object Aggregators {
119
119
// T : Comparable<T & Any>? -> T?
120
120
public fun <T : Comparable <T & Any >? > min (skipNaN : Boolean ): Aggregator <T & Any , T ?> = min.invoke(skipNaN).cast2()
121
121
122
- private val min by withOneOption { skipNaN: Boolean ->
123
- twoStepSelectingForAny<Comparable <Any >, Comparable <Any >? > (
124
- getReturnType = minTypeConversion,
125
- stepOneSelector = { type -> minOrNull(type, skipNaN) },
126
- indexOfResult = { type -> indexOfMin(type, skipNaN) },
127
- )
128
- }
122
+ public val min: AggregatorOptionSwitch1 <Boolean , Comparable <Any >, Comparable <Any >? >
123
+ by withOneOption { skipNaN: Boolean ->
124
+ twoStepSelectingForAny<Comparable <Any >, Comparable <Any >? > (
125
+ getReturnType = minTypeConversion,
126
+ stepOneSelector = { type -> minOrNull(type, skipNaN) },
127
+ indexOfResult = { type -> indexOfMin(type, skipNaN) },
128
+ )
129
+ }
129
130
130
131
// T: Comparable<T> -> T?
131
132
// T : Comparable<T & Any>? -> T?
132
133
public fun <T : Comparable <T & Any >? > max (skipNaN : Boolean ): Aggregator <T & Any , T ?> = max.invoke(skipNaN).cast2()
133
134
134
- private val max by withOneOption { skipNaN: Boolean ->
135
- twoStepSelectingForAny<Comparable <Any >, Comparable <Any >? > (
136
- getReturnType = maxTypeConversion,
137
- stepOneSelector = { type -> maxOrNull(type, skipNaN) },
138
- indexOfResult = { type -> indexOfMax(type, skipNaN) },
139
- )
140
- }
135
+ public val max: AggregatorOptionSwitch1 <Boolean , Comparable <Any >, Comparable <Any >? >
136
+ by withOneOption { skipNaN: Boolean ->
137
+ twoStepSelectingForAny<Comparable <Any >, Comparable <Any >? > (
138
+ getReturnType = maxTypeConversion,
139
+ stepOneSelector = { type -> maxOrNull(type, skipNaN) },
140
+ indexOfResult = { type -> indexOfMax(type, skipNaN) },
141
+ )
142
+ }
141
143
142
144
// T: Number? -> Double
143
145
public val std: AggregatorOptionSwitch2 <Boolean , Int , Number , Double > by withTwoOptions {
@@ -157,23 +159,23 @@ public object Aggregators {
157
159
}
158
160
}
159
161
160
- // T : primitive Number? -> Double?
161
- // T : Comparable<T & Any>? -> T?
162
+ // T: primitive Number? -> Double?
163
+ // T: Comparable<T & Any>? -> T?
162
164
public fun <T > percentileCommon (
163
165
percentile : Double ,
164
166
skipNaN : Boolean ,
165
167
): Aggregator <T & Any , T ?>
166
168
where T : Comparable <T & Any >? =
167
169
this .percentile.invoke(percentile, skipNaN).cast2()
168
170
169
- // T : Comparable<T & Any>? -> T?
171
+ // T: Comparable<T & Any>? -> T?
170
172
public fun <T > percentileComparables (
171
173
percentile : Double ,
172
174
): Aggregator <T & Any , T ?>
173
175
where T : Comparable <T & Any >? =
174
176
percentileCommon<T >(percentile, skipNaNDefault).cast2()
175
177
176
- // T : primitive Number? -> Double?
178
+ // T: primitive Number? -> Double?
177
179
public fun <T > percentileNumbers (
178
180
percentile : Double ,
179
181
skipNaN : Boolean ,
@@ -182,40 +184,45 @@ public object Aggregators {
182
184
percentileCommon<T >(percentile, skipNaN).cast2()
183
185
184
186
@Suppress(" UNCHECKED_CAST" )
185
- private val percentile by withTwoOptions { percentile: Double , skipNaN: Boolean ->
186
- flattenHybridForAny<Comparable <Any >, Comparable <Any >? > (
187
- getReturnType = percentileConversion,
188
- reducer = { type -> percentileOrNull(percentile, type, skipNaN) as Comparable <Any >? },
189
- indexOfResult = { type -> indexOfPercentile(percentile, type, skipNaN) },
190
- )
191
- }
187
+ public val percentile: AggregatorOptionSwitch2 <Double , Boolean , Comparable <Any >, Comparable <Any >? >
188
+ by withTwoOptions {
189
+ percentile: Double ,
190
+ skipNaN: Boolean ,
191
+ ->
192
+ flattenHybridForAny<Comparable <Any >, Comparable <Any >? > (
193
+ getReturnType = percentileConversion,
194
+ reducer = { type -> percentileOrNull(percentile, type, skipNaN) as Comparable <Any >? },
195
+ indexOfResult = { type -> indexOfPercentile(percentile, type, skipNaN) },
196
+ )
197
+ }
192
198
193
- // T : primitive Number? -> Double?
194
- // T : Comparable<T & Any>? -> T?
199
+ // T: primitive Number? -> Double?
200
+ // T: Comparable<T & Any>? -> T?
195
201
public fun <T > medianCommon (skipNaN : Boolean ): Aggregator <T & Any , T ?>
196
202
where T : Comparable <T & Any >? =
197
203
median.invoke(skipNaN).cast2()
198
204
199
- // T : Comparable<T & Any>? -> T?
205
+ // T: Comparable<T & Any>? -> T?
200
206
public fun <T > medianComparables (): Aggregator <T & Any , T ?>
201
207
where T : Comparable <T & Any >? =
202
208
medianCommon<T >(skipNaNDefault).cast2()
203
209
204
- // T : primitive Number? -> Double?
210
+ // T: primitive Number? -> Double?
205
211
public fun <T > medianNumbers (
206
212
skipNaN : Boolean ,
207
213
): Aggregator <T & Any , Double ?>
208
214
where T : Comparable <T & Any >? , T : Number ? =
209
215
medianCommon<T >(skipNaN).cast2()
210
216
211
217
@Suppress(" UNCHECKED_CAST" )
212
- private val median by withOneOption { skipNaN: Boolean ->
213
- flattenHybridForAny<Comparable <Any >, Comparable <Any >? > (
214
- getReturnType = medianConversion,
215
- reducer = { type -> medianOrNull(type, skipNaN) as Comparable <Any >? },
216
- indexOfResult = { type -> indexOfMedian(type, skipNaN) },
217
- )
218
- }
218
+ public val median: AggregatorOptionSwitch1 <Boolean , Comparable <Any >, Comparable <Any >? >
219
+ by withOneOption { skipNaN: Boolean ->
220
+ flattenHybridForAny<Comparable <Any >, Comparable <Any >? > (
221
+ getReturnType = medianConversion,
222
+ reducer = { type -> medianOrNull(type, skipNaN) as Comparable <Any >? },
223
+ indexOfResult = { type -> indexOfMedian(type, skipNaN) },
224
+ )
225
+ }
219
226
220
227
// T: Number -> T
221
228
// Byte -> Int
0 commit comments