Revised RFC on range design for D2
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sat Sep 27 07:13:54 PDT 2008
Sergey Gromov wrote:
> In article <gbjihf$2803$1 at digitalmars.com>,
> frank at youknow.what.todo.interNETz says...
>> Andrei Alexandrescu wrote:
>>> Steven Schveighoffer wrote:
>>>> You are assuming that the C language decision to require parentheses
>>>> for all functions was a design mistake. I would argue that the design
>>>> was on purpose and correctly served that purpose. The purpose was to
>>>> remove ambiguity when faced with understanding code without all the
>>>> context.
>>> I have stated my assumption and its basis. What is the basis of yours?
>> Yum. I think the problem is that when C was designed, K&R didn't consider
>> the use of classes with properties using getter and setter methods.
>> Therefore, it made sense to have the naked function name denote the
>> function pointer, and make braces following an identifier the mark of a
>> function call. I initially had some trouble accepting the explicit & in D
>> to get the function pointer myself.
>> I wouldn't go so far as to call that property of C a design mistake in
>> light of the actual intensions of K&R. But I definitely would defend
>> the choice of a language designer to change that feature in light of
>> more modern programming paradigms.
>
> Functions in D are first-class values. It's awkward that a first-class
> value cannot be accessed by its identifier.
I agree. But then use of functions for invocation dwarfs use of
functions as first-class values, so I think requiring & for the latter
is a sensible engineering decision.
Besides, it's more efficient to use them as alias parameters, so why not
encourage that too. And aliases do not need a "&" :o).
If you want to discuss language design mistakes, why don't you discuss a
real mistake - the infamous "lazy"? Having a storage class change the
way a type is used - now that's the perfect example of the tail wagging
the dog. Ambiguity, confusion, non-scalability, and sheer nonsense - you
can have it all with lazy. Lazy should be either fixed or honorably
discharged pronto.
Andrei
More information about the Digitalmars-d-announce
mailing list