Just gave the latest version of the document a read. Looks great! I love the idea of this being a STATIC feature. I hope we are all on the same page how this limits expressiveness. For instance, you can't express infinte lists like (0...)
. Also, one can't exchange the underyling type of an element of the list (with dynamic existential types, you could). But these are small prices to pay for the optimizations that the compiler can do if this is a static feature.
There's one thing I would like to add to the discussion. Suppose, you want to build (for whatever reason) a function composer with a similar syntax like the view builder. Function composition requires that the input of the next function in the list is equal to the output of the current function. So, in order to write code like
Chain {
f //(A) -> B
g //(B) -> C
h // (C) -> D
}
with arbitrarily many arguments, we would need some syntax to establish relations between successive elements in the variadic list.
If we had all that plus the ability to constrain associatedtypes of opaque return types, that could solve a looot of problems
So... when will that come?