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))
{
...
}
}