Revised RFC on range design for D2 (lazy)
Bruno Medeiros
brunodomedeiros+spam at com.gmail
Fri Oct 3 03:05:17 PDT 2008
Andrei Alexandrescu wrote:
> Sean Kelly wrote:
>> == Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s
>> article
>>> Bruno Medeiros wrote:
>>>> I don't understand that. You stated "It violates economy of
>>>> syntax.", so
>>>> it violates your Principle 1 of language design. So how can you be
>>>> happy with that (apart from the assignment issue)? Does fixing this
>>>> problem violate some other principle or concern of yours?
>>> I think keeping the language simple is also a good goal.
>>
>> I apologize if this has been brought up before, but I'm not sure that
>> simplicity
>> is a good thing if it can result in unpredictable behavior. For example:
>>
>> import std.stdio;
>>
>> class C
>> {
>> this( bool delegate() p )
>> {
>> version( a )
>> cond = p;
>> version( b )
>> ptr = p;
>> }
>> version( a )
>> {
>> bool delegate() cond;
>> }
>> version( b )
>> {
>> bool delegate() ptr;
>> bool delegate() cond() { return ptr; }
>> }
>> }
>>
>> void main()
>> {
>> bool test() { writefln( "hi" ); return false; }
>> auto c = new C( &test );
>> if( c.cond() )
>> writefln( "true" );
>> }
>>
>> Running version=a prints "hi" while version=b prints "true." If there
>> were
>> some way in the language to say "cond() is a property" then this issue
>> would
>> not be silently introduced when changing cond from a variable to a
>> method.
>
> Oh how I am with you on this. I've always thought mentioning a delegate
> name should NOT EVER evaluate the delegate. Walter definitely took the
> wrong turn down that alley there. And guess what. He got ambushed by the
> "lazy" keyword right there. I told Walter to not do that "lazy" keyword,
> he disregarded, but the time will come when that stone will be turned.
>
>
> Andrei
Hold it right there! Are you saying that the existence of 'lazy' somehow
required, or helped justify the existence of the omittable parenthesis
functionality? How is that?
I think you are accusing innocents ('lazy') or wrongdoing. 'lazy' has
nothing to do with the omittable parenthesis functionality, I think they
are completely orthogonal. Prove me wrong otherwise.
--
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d-announce
mailing list