Jon Lang wrote:
Here, we need a bit of a clarification: are we talking roles or classes? Real example: Numeric is a role; Num is a class. Both can be used in signatures; but only classes can be used to create objects. That is, "my Num $x;" works; but "my Numeric $x;" doesn't. As such, you cannot coerce an object to a role; you can only coerce it to a class that does that role.
Bad example. Both of those would work. Otherwise one of the main reasons for roles to exist, which is to be able to declare a container $x and say that it may hold anything that does role Y, wouldn't be possible. Perhaps a better example is "Num.new(...)" works but "Numeric.new(...)" doesn't. -- Darren Duncan