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