In the Objects chapter, a WALK pseudo-class is spec'ed for using
when calling sets of methods:

These are the arguments listed that can be used with WALK:

    :canonical      # canonical dispatch order
    :ascendant      # most-derived first, like destruction order
    :descendant     # least-derived first, like construction order
    :preorder       # like Perl 5 dispatch
    :breadth        # like multi dispatch

First, it would be nice if the comments "like Perl 5" and "like multi
dispatch" could be expanded, if only to provide references to their
complete specs. Also, if "canonical" means something besides "I don't
care", it would be nice to have a reference for that, too.

My concern for the moment is clarification how these options can be
combined. Clearly, combining ":ascendant" and ":descendant" doesn't make

But, I assume a "self.*meth" call can work along both the inheritance
axis and the multi method access.

Therefore, it seems fair to combine one option that affects each axis.

As a "use case", in CGI::Application we traverse classes ":ascendant"
but then execute what would be "multi methods" in the order they are
defined, which sounds like perhaps ":preorder" to me.


Reply via email to