One of the things that got a little less clear with A12 was the idea of multiple C<is> clauses.
Once upon a time, we talked about: my $spot is Dog is const is persistent is ...; Obviously some of those are traits, now. However, I'm wondering how to handle things like my recent suggestion of a class (metaclass instance) that generated different accessor behavior. The obvious way was: use GrammarMod; # use AccessorClass; NewKeyword thing {...} # accessor_class thing {...} but isn't there a better way? In particular, is there some way for the trait to declare that it modifies the metaclass, not the class, so that: use GrammarMod; # use AccessorClass; class thing is NewKeyword {...} # class Obj is accessor_class { has $.foo is rw; } would be able to change the metaclass behavior, not the class behavior? At first blush, this is a macro: class OtherBehavior is MetaClass {...} # class AccessorClass is MetaClass {...} macro NewKeyword is parsed(<Perl6::ClassDecl>) { $0.meta_class = new OtherBehavior; } but then there's the issue of composition. Perhaps the accessor function behavior is a role, but it seems more like a MetaRole: macro NewKeyword is ... { $0.meta_class will do OtherRole; } Comment? =Austin