Traits can be mean, but roles are "guarenteed"(=forced?) to play nice. But suppose I have a role that wants to play nicer, by ensuring that incorporating it in some class actually makes sense.
For example, it may want to ensure that the class has $.foo. (*) I have a few questions: 1: Can this be achieved by a CHECK {} block in the role, that gets run just before the class composition is over? Or should it be spelled differently, CHECK {} being the last thing that run before "run-time"? 2: What is the syntax for checking that a class has a variable? In this case the class does not even really exist when we want to check. 3: If arbitrary things can go into such a CHECK{} block, then the following two may not mean the same: does A does B; does B does A; Are roles I<expected> to play nice, or I<forced> to play nice? --abhijit (*) The solution "add a C<has $.foo> to the role itself, and if the class has a $.foo, it takes precedence" does not work because $.foo may have been added by another role. Abhijit Mahabal http://www.cs.indiana.edu/~amahabal/