Revised RFC on range design for D2
Sean Kelly
sean at invisibleduck.org
Thu Oct 2 11:06:32 PDT 2008
== 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.
Sean
More information about the Digitalmars-d-announce
mailing list