On Fri, Mar 29, 2013 at 4:04 PM, Ovid <curtis_ovid_...@yahoo.com> wrote: >>> > with 'R::Programmer'; >>> > with 'R::Clerk';
> I think you may have misread the code. He composed them separately because if > he composed them at the same time, he would get a conflict: > > Due to a method name conflict in roles 'R::Clerk' and 'R::Programmer', > the method 'pay_rate' must be implemented or excluded by 'R::Employee' at > ... > > Thus, in this instance, he was forced to compose those roles separately > (since "exclude" is going to be taken away) and lose compositional safety. I had a choice between the above and with 'R::Programmer', 'R::Clerk'; sub pay_rate { "nonsensical return value, because the modelling is weird" } Both work, both are nasty. -- Lars Balker Consult::Perl