foo!(bar) ==> foo{bar} ==> foo[bar] (just Brackets)
Paul D. Anderson
paul.d.removethis.anderson at comcast.andthis.net
Tue Oct 14 15:50:43 PDT 2008
Bruno Medeiros Wrote:
> Don wrote:
> > Denis Koroskin wrote:
> >> On Wed, 08 Oct 2008 18:22:21 +0400, superdan <super at dan.org> wrote:
> >>
> >>> Walter Bright Wrote:
> >>>
> >>>> Dee Girl wrote:
> >>>> > I did not follow this group recent. School started. Sorry! I just see
> >>>> > now and please add my vote if possible. I start with D recent and I
> >>>> > remember beginning. foo!(bar) was not pleasant. Like forced
> >>>> > convention with a bad char. And friends I show code never like it. It
> >>>> > is first thing they say why they do not like D. For me foo{bar}
> >>>> > better idea. Thank you, Dee Girl
> >>>>
> >>>> What do your friends think of { } ?
> >>>
> >>> School started. Every one so busy now. But I think does not matter
> >>> any more ^_^
> >>>
> >>> I want to make little idea. Sorry if idea mentioned before (I did not
> >>> read every thread). I think we can look square brackets []. Let me
> >>> explain why.
> >>>
> >>> Paren () is over used in C and in D. Any expression can be in (). And
> >>> adding () is possible in many cases. But it is not same with []. For
> >>> example a:(b) is ambiguous but a:[b] is not. So there are many signs
> >>> possible after symbol and before [. They are:
> >>>
> >>> ~ ! @ # $ % ^ & * - + = | \ / , < . > ? :
> >
> > Not all of them work. Here's a few examples:
> >
> > enum { d= 3, e = 7 }
> > int [] a=[1,2];
> > bool c;
> > auto k=[e]; // kills =
> > a ~= c?[d]:[e]; // kills ?
> > int [] f = c?k:[e]; // kills :
> > if (f>[e]) {} // kills <
> > if (f<[e]) {} // kills >
> > auto g = (k,[d]); // kills comma
> > auto h = k~[d]; // kills ~
> >
> > Array ops will kill + - * / & | % ^
> > Suddenly the list looks pretty short.
> > !@#$\.
>
>
> Hum, what about brackets without any prefix character at all?
>
> Vector[int, 2] foo;
> List[Vector[int, 2]] bar;
> int[3] a = [1, 2, 3]; // array literal here
> int[int] map;
> alias DenseMatrix[num] PulType;
> alias SparseRowsMatrix[num, HashSparseVector] PuuType;
> alias BiMap[uint, Tuple[uint, uint], BiMapOptions.lhDense] DicType;
> int var = a[2]; // array indexing here
>
> Hum... doesn't look bad visually. In fact it seems to fit quite nice
> with how associative arrays, and even normal arrays, are declared. Hum,
> yes, I'm personally liking this a lot.
>
> But does it have any ambiguities? Hum, can't think of any off-hand. If
> an identifier appears before a bracket list, it could either be a
> template instantiation, or an array indexation. But the syntax of both
> is the same, so it doesn't need to be distinguished in the parser.
>
> Waddya think, was this discussed before?
>
> --
> Bruno Medeiros - Software Developer, MSc. in CS/E graduate
> http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
If we have to change the template instantiation syntax at all (and I don't think it needs changing), I like brackets better than the plain parens.
Paul
More information about the Digitalmars-d
mailing list