hi Matthew,
That Typed Scheme paper was an interesting one, thanks for sharing. It's good to learn from what other languages are doing. This week I looked at the tensor typing extension for Kotlin from Facebook, but unfortunately it didn't seem to contain variadics.
About the new Apply function, do you think that `Apply[Tuple, Ts]` works better than `Tuple[Expand[Ts]]`? I find the latter more intuitive. Almost as having the word "expand" where the star would be. Maybe it's because I never used the old python `apply`, and I associate "apply" more with `pandas.apply` which is (without axis parameters) an element-wise application. This element-wise application I would tend to associate with `Apply[Tuple, Ts] = Tuple[T1], Tuple[T2],...`.
A potential advantage of `Expand` is to allow `Tuple[int, Expand[Ts]]` which `Apply` does not allow.
Cheers,
Luk