Supporting Extensions for Structural Types

to try and get this conversation away from syntax and back to semantics, i just wanna point to what my vector manifesto writeup has to say about this issue, and that’s that if you want to have “an arbitrary number of T” (as opposed to “an arbitrary number of arbitrary types T), you’re probably going to want to parameterize that quantity in the form of a generic multiplicity parameter/associated concept. This is the whole idea around having GMPs.

protocol HomogenousTuple
{
    associatedtype Element 
    associatedmultiplicity N

    init(headerAndElements:(Int, Element * N))
}

struct S:Homogenous3Tuple<Element>:HomogenousTuple
{
    init(headerAndElements:(Int, Element, Element, Element)) 
    {
        ...
    }
}