(OK, the subject sucked, but I tried :) From S14:
You can, however, say $fido does Sentry; $fido does Tricks; $fido does TailChasing; $fido does Scratch; <snip> Unlike the compile-time role composition, each of these layers on a new mixin with a new level of inheritance, creating a new anonymous class for dear old Fido, so that a .chase method from TailChasing hides a .chase method from Sentry. Recently I reported a bug in Moose's runtime role application: http://rt.cpan.org/Public/Bug/Display.html?id=43904 The problem was very hard to track down because I was effectively doing something like this: $object->meta->apply('Some::Role') while 1; (The reality is that we had a singleton with a role applied to it multiple times). Eventually, the code broke and threw a bunch of weird "recursive inheritance" warnings due to multiple anonymous classes being applied to the object. This was *real fun* to debug, but I can imagine a scenario for this being natural: Your REST interface returns XML, but sometimes someone wants YAML. So you have: $resultset does Role::Serializable::XML But sometimes: $resultset does Role::Serializable::YAML Since you cache resultsets if they've not changed, you could easily have the XML and YAML roles getting reapplied at runtime multiple times. I don't see anything in the spec addressing this. Aside from "don't do that", is this something which can be addressed in perl instead of Perl? Cheers, Ovid -- Buy the book - http://www.oreilly.com/catalog/perlhks/ Tech blog - http://use.perl.org/~Ovid/journal/ Twitter - http://twitter.com/OvidPerl Official Perl 6 Wiki - http://www.perlfoundation.org/perl6