On 8/8/06, Yuval Kogman <[EMAIL PROTECTED]> wrote:
My original idea was that this is again an ambiguity error - without
the helper function stating which role it's using it cannot dispatch
the "header" method at all, since it's in a role-conflicted state.

The difference, though, is that this ambiguity error happens at
call-time, whereas most ambiguity errors happen at composition time.

It strikes me that there is a happy medium.

  class Mail::TheOneTrueWay {
      has $.some_api adapts Mail::SomeAPI {
          method header;
          # this method has different semantics for
          # each role. It would normally conflict.

      has $.some_other_api adapts Mail::SomeOtherAPI {
          method header;

      method body; # this method is shared between the two roles

Which would pull all that multiple delegation bullshit in my earlier
post.  Creating the class is just as easy, and using it involves
putting .some_api and .some_other_api in appropriate places like a
delegation interface.   It's not quite as DWIMmy, but the class
doesn't do either role so errors will be caught quickly.  It is also


Reply via email to