When I ask for the maximum of an empty collection, there is no obvious result in general. For a collection of real numbers, nevertheless I would expect to obtain `-Inf`

and not an exception.

Boiling down my use-case gave:

```
julia> maximum(Float64[])
ERROR: ArgumentError: reducing over an empty collection is not allowed
Stacktrace:
[1] _mapreduce(::Base.#identity, ::Base.#scalarmax, ::IndexLinear, ::Array{Float64,1}) at ./reduce.jl:265
[2] maximum(::Array{Float64,1}) at ./reduce.jl:454
[3] macro expansion at ./REPL.jl:97 [inlined]
[4] (::Base.REPL.##1#2{Base.REPL.REPLBackend})() at ./event.jl:73
```

Similar results are obtained for `minimum(Float64[])`

. Interestingly

```
julia> maximum(abs, Float64[])
0.0
```

works fine.

I found that I could tweak the behavior to the desired by defining adding methods

```
mr_empty(::typeof(identity),::typeof(scalarmax),::Type{T}) where T<:Real = typemin(T)
mr_empty(::typeof(identity),::typeof(scalarmin),::Type{T}) where T<:Real = typemax(T)
```

overriding the standard `mr_empty(f, op, T) = _empty_reduce_error()`

of the Base module, defined in `base/reduce.jl`

Are there any objections in adding code similar to my proposed lines into `base/reduce.jl`

?