More than 5 year ago Tim Holey wished he could write
colorspace{C<:ColorValue,A<:AbstractArray{C}}(img::A) = string(C)
He called such a feature “triangular dispatch (left-to-right template parameter chaining)”.
Today Julia does support such “triangular” dispatch and Tim’s example can be written as
colorspace(img::A) where A<:AbstractArray{C} where C<:ColorValue = string(C)
I understand the “left-to-right template parameter chaining” part, but what makes this kind of dispatch triangular? What are the vertices of that triangle?