@@ -119,25 +119,27 @@ public object Aggregators {
119119 // T : Comparable<T & Any>? -> T?
120120 public fun <T : Comparable <T & Any >? > min (skipNaN : Boolean ): Aggregator <T & Any , T ?> = min.invoke(skipNaN).cast2()
121121
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+ }
129130
130131 // T: Comparable<T> -> T?
131132 // T : Comparable<T & Any>? -> T?
132133 public fun <T : Comparable <T & Any >? > max (skipNaN : Boolean ): Aggregator <T & Any , T ?> = max.invoke(skipNaN).cast2()
133134
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+ }
141143
142144 // T: Number? -> Double
143145 public val std: AggregatorOptionSwitch2 <Boolean , Int , Number , Double > by withTwoOptions {
@@ -157,23 +159,23 @@ public object Aggregators {
157159 }
158160 }
159161
160- // T : primitive Number? -> Double?
161- // T : Comparable<T & Any>? -> T?
162+ // T: primitive Number? -> Double?
163+ // T: Comparable<T & Any>? -> T?
162164 public fun <T > percentileCommon (
163165 percentile : Double ,
164166 skipNaN : Boolean ,
165167 ): Aggregator <T & Any , T ?>
166168 where T : Comparable <T & Any >? =
167169 this .percentile.invoke(percentile, skipNaN).cast2()
168170
169- // T : Comparable<T & Any>? -> T?
171+ // T: Comparable<T & Any>? -> T?
170172 public fun <T > percentileComparables (
171173 percentile : Double ,
172174 ): Aggregator <T & Any , T ?>
173175 where T : Comparable <T & Any >? =
174176 percentileCommon<T >(percentile, skipNaNDefault).cast2()
175177
176- // T : primitive Number? -> Double?
178+ // T: primitive Number? -> Double?
177179 public fun <T > percentileNumbers (
178180 percentile : Double ,
179181 skipNaN : Boolean ,
@@ -182,40 +184,45 @@ public object Aggregators {
182184 percentileCommon<T >(percentile, skipNaN).cast2()
183185
184186 @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+ }
192198
193- // T : primitive Number? -> Double?
194- // T : Comparable<T & Any>? -> T?
199+ // T: primitive Number? -> Double?
200+ // T: Comparable<T & Any>? -> T?
195201 public fun <T > medianCommon (skipNaN : Boolean ): Aggregator <T & Any , T ?>
196202 where T : Comparable <T & Any >? =
197203 median.invoke(skipNaN).cast2()
198204
199- // T : Comparable<T & Any>? -> T?
205+ // T: Comparable<T & Any>? -> T?
200206 public fun <T > medianComparables (): Aggregator <T & Any , T ?>
201207 where T : Comparable <T & Any >? =
202208 medianCommon<T >(skipNaNDefault).cast2()
203209
204- // T : primitive Number? -> Double?
210+ // T: primitive Number? -> Double?
205211 public fun <T > medianNumbers (
206212 skipNaN : Boolean ,
207213 ): Aggregator <T & Any , Double ?>
208214 where T : Comparable <T & Any >? , T : Number ? =
209215 medianCommon<T >(skipNaN).cast2()
210216
211217 @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+ }
219226
220227 // T: Number -> T
221228 // Byte -> Int
0 commit comments