I'm a little surprised by this:

julia> Hamt.NArray{4,Int64} <: Hamt.NArray{ANY,Int64}
true

julia> Type{Hamt.NArray{4,Int64}} <: Type{Hamt.NArray{ANY,Int64}}
false

I was trying to make call specialise on T but not N with:

call{T}(t::Type{NArray{ANY,T}}) = ...

This works perfectly for values:

Base.getindex{T}(narray::NArray{ANY,T}, ix::Integer) = ...

Is Type completely invariant?

Reply via email to