On Wednesday, 29 August 2018 at 19:56:31 UTC, Everlast wrote:
One of the things that makes a good language is it's internal
syntactic consistency. This makes learning a language easier
and also makes remembering it easier. Determinism is a very
useful tool as is abstraction consistency. To say "Just except
D the way it is" is only because of necessity since that is the
way D is, not because it is correct. (There are a lot of
incorrect things in the world such as me "learning" D... since
I've been programming in D on and off for 10 years, I just
never used a specific type for variadics since I've always use
a variadic type parameter)
To justify that a poor design choice is necessary is precisely
why the poor design choice exists in the first place. These are
blemishes on the language not proper design choices. For
example, it is necessary for me to pay taxes, but it does not
mean that taxes are necessary.
The syntax *is* consistent. In `foo(int[] a...)`, `int[]` is the
type of the parameter, and `a` is its name. This is consistent
with how all other function parameters are declared. The only
difference is in how arguments are bound to that parameter.
That's what the `...` signifies: that a single parameter will
accept multiple arguments. It's really quite straightforward and
orthogonal.