Description
ref #11280 (comment) and a few other places I've mentioned this. Functions like zeros
, ones
, eye
, rand
, mmap
(maybe), etc which currently take an eltype
as inputs and return some subtype of AbstractArray
, would be much more general if they instead took the container type (with element type as a parameter) as input, so the current case would instead look like zeros(Array{Float64}, dims...)
. This would allow extending these functions to other types of AbstractArray
in a much nicer way than right now. We could potentially get rid of a bunch of ugly-named functions like bitrand
and spzeros
and speye
and sprandbool
with this change.
I think it would by necessity be breaking, though maybe clever enough subtyping of zeros{T<:AbstractArray}(::Type{T}, dims...)
would allow putting in deprecations (or defaults? might be fragile) for "scalar" types, if we have enough of a concept of interfaces to determine what makes a type a scalar (that's a different issue).
This would have to be a breaking change for arrays-of-arrays (if any of these functions currently work for arrays of arrays, that is?).