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