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