On Fri, Feb 20, 2004 at 02:47:55PM +1100, Damian Conway wrote:
: Yep. Inside the body of C<sort> you'd access them as:
:
: $by.trait{descending}
: $by.trait{insensitive}
:
: (unless Larry's changed the trait accessor syntax since last I looked).
Well, if traits are just compile-time properties, and properties
are just mixed-in roles (usually enums), then it's more likely that
something like:
$by.Direction == descending
$by.Case == insensitive
would be the incantation. Or maybe if enums auto-booleanize, then
you could say
$by.Direction::descending
$by.Case::insensitive
And then
$by.descending
$by.insensitive
might be allowed as abbreviations when unambiguous. Or maybe we
require matching:
$by ~~ descending
$by ~~ insensitive
But there is no such thing as a "true" property or "false" property.
There's a Boolean role that can have the value true or false. Traits
are mixed in to declared objects at compile time, and can do weird
things to such objects at mixin time.
Likewise there's no such thing as a "descending" property. There's
a Direction property which defaults to "ascending". And a Case property
that defaults to "sensitive".
To do otherwise is to set ourselves up for objects that can be both
true and false simultaneously. Only junctions should be allowed
to do that...
Larry