Bill Baxter wrote: > On Tue, Nov 17, 2009 at 3:01 PM, Ellery Newcomer > <[email protected]> wrote: >> Bill Baxter wrote: >>> On Tue, Nov 17, 2009 at 1:51 PM, KennyTM~ <[email protected]> wrote: >>>> On Nov 18, 09 05:40, Ellery Newcomer wrote: >>>>> Bill Baxter wrote: >>>>>> However, I think for the good of humanity we can accept that one >>>>>> little bizarre example of legal C syntax not doing the same thing in >>>>>> D. >>>>> int[] i; >>>>> >>>>> auto a = (i)[0]; >>>>> >>>>> what does this do? >>>> (i) should not construct a tuple. Probably (i,). >>> That's Python's solution and it seems to work out ok. >>> >>> --bb >> How do we express tuple types? ... >> These won't work: >> ... >> (int,int) [] lst; //want > > Why won't that work? You may be right, but that particular > declaration doesn't seem ambiguous to me. > > --bb
foo!( (i,i) ) (); compiler doesn't know if 'i' is a type or a variable. Like I said, the problem already exists for eg foo!( i ) (); and isn't semantically ambiguous (as far as I know..), so it is doable. at statement level, it would require a lot of lookahead to distinguish eg (i,i)[0] = blah; (i,i)[0] blah; Not my idea of good language design (one character deep in the production - can you say fortran :) actually fortran is worse, it discards whitespace as token separators)
