@@ -113,25 +113,27 @@ public object Aggregators {
113113 // T : Comparable<T & Any>? -> T?
114114 public fun <T : Comparable <T & Any >? > min (skipNaN : Boolean ): Aggregator <T & Any , T ?> = min.invoke(skipNaN).cast2()
115115
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+ }
123124
124125 // T: Comparable<T> -> T?
125126 // T : Comparable<T & Any>? -> T?
126127 public fun <T : Comparable <T & Any >? > max (skipNaN : Boolean ): Aggregator <T & Any , T ?> = max.invoke(skipNaN).cast2()
127128
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+ }
135137
136138 // T: Number? -> Double
137139 public val std: AggregatorOptionSwitch2 <Boolean , Int , Number , Double > by withTwoOptions {
@@ -151,23 +153,23 @@ public object Aggregators {
151153 }
152154 }
153155
154- // T : primitive Number? -> Double?
155- // T : Comparable<T & Any>? -> T?
156+ // T: primitive Number? -> Double?
157+ // T: Comparable<T & Any>? -> T?
156158 public fun <T > percentileCommon (
157159 percentile : Double ,
158160 skipNaN : Boolean ,
159161 ): Aggregator <T & Any , T ?>
160162 where T : Comparable <T & Any >? =
161163 this .percentile.invoke(percentile, skipNaN).cast2()
162164
163- // T : Comparable<T & Any>? -> T?
165+ // T: Comparable<T & Any>? -> T?
164166 public fun <T > percentileComparables (
165167 percentile : Double ,
166168 ): Aggregator <T & Any , T ?>
167169 where T : Comparable <T & Any >? =
168170 percentileCommon<T >(percentile, skipNaNDefault).cast2()
169171
170- // T : primitive Number? -> Double?
172+ // T: primitive Number? -> Double?
171173 public fun <T > percentileNumbers (
172174 percentile : Double ,
173175 skipNaN : Boolean ,
@@ -176,40 +178,45 @@ public object Aggregators {
176178 percentileCommon<T >(percentile, skipNaN).cast2()
177179
178180 @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+ }
186192
187- // T : primitive Number? -> Double?
188- // T : Comparable<T & Any>? -> T?
193+ // T: primitive Number? -> Double?
194+ // T: Comparable<T & Any>? -> T?
189195 public fun <T > medianCommon (skipNaN : Boolean ): Aggregator <T & Any , T ?>
190196 where T : Comparable <T & Any >? =
191197 median.invoke(skipNaN).cast2()
192198
193- // T : Comparable<T & Any>? -> T?
199+ // T: Comparable<T & Any>? -> T?
194200 public fun <T > medianComparables (): Aggregator <T & Any , T ?>
195201 where T : Comparable <T & Any >? =
196202 medianCommon<T >(skipNaNDefault).cast2()
197203
198- // T : primitive Number? -> Double?
204+ // T: primitive Number? -> Double?
199205 public fun <T > medianNumbers (
200206 skipNaN : Boolean ,
201207 ): Aggregator <T & Any , Double ?>
202208 where T : Comparable <T & Any >? , T : Number ? =
203209 medianCommon<T >(skipNaN).cast2()
204210
205211 @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+ }
213220
214221 // T: Number -> T
215222 // Byte -> Int
0 commit comments