Open
Description
When declaring rules for constructors of parameteric types (e.g. Arrays)
one needs too know what the parameter type of the elements are.
We should define a helper for this.
Its probaly something like:
differential_type(::Type{<:Any})) = Any
differential_type(T::Type{<:Real}) = Union(AbstractZero, T)
differential_type(::Array{T}) where T = Array{differential_type(T)}
This is primarily for use for type parameters of zero arg constructors.
Rather than the general way to do it