> > Err. There are only two things: compile-time variable properties and
> > run-time value properties. Attributes are a Perl 5 construct that we're
> > renaming because the name conflicts with the OO term for object data.
>
> So,
>
> $a is true
>
> and
>
> $a.true = 1
>
> are synonyms, right?
Depends whether Larry makes property accessors lvalued.
$a.true is actually quite a bit more sophisticated. It means:
If the object $a refers to has a C<true> method, call that;
Otherwise if the variable $a has a C<true> property, retrieve that;
Otherwise if the value in $a has a C<true> property, retrieve that.
> if not, then there are three things: compile-time variable properties,
> run-time variable properties, and run-time value properties, no?
There are no run-time settable variable properties. Only run-time retrieval
of compile-time settable ones.
> if so, then wouldn't it be safer to put properties inside a special object
> associated with each object (the 'traits' object) so there would be little
> namespace collision?
We actually want the possibility of that kind of namespace collision:
for polymorphism.
Damian