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