Larry wrote:

I think it's also a mistake to give C<my> two unrelated meanings.

Yes. I fully concede this point. A declarator is the way to go.



They are lexically scoped aliases to properties of the current block.

Err. Properties or traits? Presumably traits, since they're declared at compile-time. This feeds rather interestingly into my suggestion that a C<where> modifier be a way of setting properties on the call. See below.



Perhaps we should just go with that:

property $foo = 0;

Or whatever word we choose, I don't care:

prop $foo = 0;

I could certainly live with this.


And if we had C<where> as a mechanism for setting the value of such traits during a call, we'd get the rather tidy:

foo('bar') where error('fatal');

    sub foo($arg) {
        return 1 if $arg eq 'bar'
        given prop $error {
            when 'fatal'   { die "horribly" }
            when 'verbose' { warn "direly"; continue; }
            default        { return 0 }
        }
    }



have $foo = 0;

Please, no. Far too close to C<has>.



    this $foo = 0;
    here $foo = 0;
    block $foo = 0;
    static $foo = 0;    ;-)

I still think C<prop> is the way to go.



Actually has/have is kinda cute:

    Each object has...
    We all have...

Yes, "cute" is exactly the right word for it. <sound of alarm bells ringing>

;-)

Damian




Reply via email to