Solving the impossible?
Paul Backus
snarwin at gmail.com
Thu Aug 30 00:10:42 UTC 2018
On Wednesday, 29 August 2018 at 22:18:09 UTC, Everlast wrote:
> No it is not! you have simply accepted it to be fact, which
> doesn't make it consistent.
>
> If you take 100 non-programmers(say, mathematicians) and ask
> them what is the natural extension of allowing an arbitrary
> number of parameters knowing that A is a type and [] means
> array and ... means an arbitrary number of, they will NOT think
> A[]... makes sense.
Has anyone actually done such a survey? If not, how can you
possibly be sure what the result will be?
> If I'm wrong, then you have to prove why a syntax such as
> bar(int a...) cannot be interpreted singularly in the way I
> have specified.
Of course, there's no inherent reason why `bar(int a...)`
couldn't be interpreted the way you've specified. But there's
also no reason why we couldn't use `bar(int... a)`, like Java, or
`bar(params int[] a)`, like C#, or any of the other syntaxes you
can see if you visit the Rosetta Code page on variadic functions.
[1]
All programming languages are artificial. All syntax is
arbitrary. What feels "natural" to you is not a universal truth,
but a matter of personal taste and preference. To an experienced
Scheme programmer, `(foo . args)` probably feels more natural
than any of the examples I've mentioned. To an experienced APL
programmer, the entire idea of a separate syntax for variadic
functions probably sounds ridiculous.
Personally, I find the most pragmatic approach to be "when in
Rome, do as the Romans do." So when I'm programming in D, I write
`foo(int[] a...)`, and when I'm programming in Python, I write
`foo(*args)`, and when I'm programming in C, I write `foo(...)`
and `#include <stdarg.h>`. If your goal is to solve actual
problems, arguing about syntactic minutiae is a waste of time.
[1] https://rosettacode.org/wiki/Variadic_function
More information about the Digitalmars-d-learn
mailing list