In Julia,
Array{Int32, 1} <: Array{Integer, 1}
evaluates to false, but
Array{Int32, 1} <: (Array{T, 1} where T <: Integer)
evaluates to true because Int32 <: Integer is true.
In my mind, the first and second expressions communicate the same idea and should evaluate equivalently. Furthermore, the first expression is less cluttered. Is there a reason why Julia's syntax evaluates the former as false but the latter as true? Is there something deep and good about this behavior or is this an oversight in how Arrays/the type system were developed?