I might be missing something, but how does this proposal get around the
ambiguity in
(a,b,c)[0]
?
Currently, it's valid C syntax and valid D syntax. In your proposal it
would be valid tuple syntax too.
On 10/07/2010 01:04 AM, Walter Bright wrote:
There have been a couple of looong threads about tuples:
http://www.digitalmars.com/d/archives/digitalmars/D/Reddit_why_aren_t_people_using_D_93528.html
http://www.digitalmars.com/d/archives/digitalmars/D/Should_the_comma_operator_be_removed_in_D2_101321.html
A lot of it foundered on what the syntax for tuple literals should be.
The top of the list is simply enclosing them in ( ). The problem with
this is
(expression)
Is that a parenthesized expression, or a tuple? This really matters,
since (e)[0] means very different things for the two. Finally, I got to
thinking, why not just make it a special case:
( ) == tuple
(a) == parenthesized expression
(a,b) == tuple
(a,b,c) == tuple
(a,b,c,d) == tuple
etc.
No ambiguities! Only one special case. I submit this special case is
rare, because who wants to define a function that returns a tuple of 1?
Such will come about from generative programming, but:
(a,b,c)[0]
may be how the generative programming works, and that suggests:
(a,0)[0]
as how a user could generate a tuple of 1. Awkward, sure, but like I
said, I think this would be rare.