Template instantiation syntax

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Oct 11 19:07:20 PDT 2008


Bill Baxter wrote:
> On Sun, Oct 12, 2008 at 10:46 AM, bearophile <bearophileHUGS at lycos.com> wrote:
>> Jarrett Billingsley:
>>> It's not "error-prone", it's "you're not used to it."  You very
>>> commonly fall into the fallacy that if you think something's
>>> bad/confusing/not what you're used to, then _everyone_ must think that
>>> way and therefore it _must_ change.  Sorry, that's not the way it
>>> works.  I haven't mistyped a foreach loop, ever.  Deal with it.
>> I remember that when I have discussed about this topic the first time another person has said of sharing this problem of mine with this syntax.
>>
>> C# foreach syntax uses the "in", and Python too uses it. Both languages are quite more used than D, are modern, and they care about their usability and readability.
>>
>> If I don't talk about this topic I can't know if it's a common problem, or a personal one.
>>
>> So even if I am wrong (and I am wrong all the time), and the current foreach syntax of D isn't bug-prone, I think the topic deserves a little discussion, so people can show who's right.
> 
> I agree with you, Bearophile.  And I may be the person you remember
> agreeing with you before.  So we may be the only two.  :-)   Although
> clearly designers of C# and Python thought it looked nicer than other
> possibilities, so apparently they agree too.
> 
> But anyway it seems not to be an easy change to make it work in D
> without ruining the easy syntax parsing.  So another idea for
> unambiguous syntax is needed.   An 'of' keyword or make an
> in-expression or something.
>       foreach(x of thinglist) { ... }
>       foreach(x in(thinglist)) { ... }
>       foreach(x (in) thinglist) { ... }
> 
> But even then, the result has to be so much better than ";" that it's
> worth breaking backwards compatibility.  I think that's a hard sell.
> ";" works and its not totally terrible, and it does have precedent
> with the semicolons in regular for loops.

I don't see any technical difficulty with allowing foreach (x in y).

Andrei



More information about the Digitalmars-d mailing list