On Wed, 06 Oct 2010 23:04:35 -0700, 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.
--vote; Personally, I don't think we should start adding a dedicated tuple syntax at this point. There are so many things that are more important, and besides, I think the library tuples are pretty cool. We should instead focus on making Tuple!(...) even better. -Lars