@@ -306,25 +306,29 @@ with reduction `op` over an empty array with element type of `T`.
306
306
307
307
If not defined, this will throw an `ArgumentError`.
308
308
"""
309
- reduce_empty (op, T) = _empty_reduce_error ()
310
- reduce_empty (:: typeof (+ ), T) = zero (T)
309
+ reduce_empty (op, :: Type{T} ) where {T} = _empty_reduce_error ()
310
+ reduce_empty (:: typeof (+ ), :: Type{Union{}} ) = _empty_reduce_error ()
311
+ reduce_empty (:: typeof (+ ), :: Type{T} ) where {T} = zero (T)
311
312
reduce_empty (:: typeof (+ ), :: Type{Bool} ) = zero (Int)
312
- reduce_empty (:: typeof (* ), T) = one (T)
313
+ reduce_empty (:: typeof (* ), :: Type{Union{}} ) = _empty_reduce_error ()
314
+ reduce_empty (:: typeof (* ), :: Type{T} ) where {T} = one (T)
313
315
reduce_empty (:: typeof (* ), :: Type{<:AbstractChar} ) = " "
314
316
reduce_empty (:: typeof (& ), :: Type{Bool} ) = true
315
317
reduce_empty (:: typeof (| ), :: Type{Bool} ) = false
316
318
317
- reduce_empty (:: typeof (add_sum), T) = reduce_empty (+ , T)
319
+ reduce_empty (:: typeof (add_sum), :: Type{Union{}} ) = _empty_reduce_error ()
320
+ reduce_empty (:: typeof (add_sum), :: Type{T} ) where {T} = reduce_empty (+ , T)
318
321
reduce_empty (:: typeof (add_sum), :: Type{T} ) where {T<: SmallSigned } = zero (Int)
319
322
reduce_empty (:: typeof (add_sum), :: Type{T} ) where {T<: SmallUnsigned } = zero (UInt)
320
- reduce_empty (:: typeof (mul_prod), T) = reduce_empty (* , T)
323
+ reduce_empty (:: typeof (mul_prod), :: Type{Union{}} ) = _empty_reduce_error ()
324
+ reduce_empty (:: typeof (mul_prod), :: Type{T} ) where {T} = reduce_empty (* , T)
321
325
reduce_empty (:: typeof (mul_prod), :: Type{T} ) where {T<: SmallSigned } = one (Int)
322
326
reduce_empty (:: typeof (mul_prod), :: Type{T} ) where {T<: SmallUnsigned } = one (UInt)
323
327
324
- reduce_empty (op:: BottomRF , T) = reduce_empty (op. rf, T)
325
- reduce_empty (op:: MappingRF , T) = mapreduce_empty (op. f, op. rf, T)
326
- reduce_empty (op:: FilteringRF , T) = reduce_empty (op. rf, T)
327
- reduce_empty (op:: FlipArgs , T) = reduce_empty (op. f, T)
328
+ reduce_empty (op:: BottomRF , :: Type{T} ) where {T} = reduce_empty (op. rf, T)
329
+ reduce_empty (op:: MappingRF , :: Type{T} ) where {T} = mapreduce_empty (op. f, op. rf, T)
330
+ reduce_empty (op:: FilteringRF , :: Type{T} ) where {T} = reduce_empty (op. rf, T)
331
+ reduce_empty (op:: FlipArgs , :: Type{T} ) where {T} = reduce_empty (op. f, T)
328
332
329
333
"""
330
334
Base.mapreduce_empty(f, op, T)
0 commit comments