After a brief(!?) discussion with Autrijus on the subject of
multimethods, it would appear that Parrot's obligation WRT their
dispatch is pretty much two opcodes calling two vtable functions
which must be implemented by sub-like objects:

  1. is_mpd - Does this object have Multiple Personality Disorder?
              Returns true if this object is merely a front for multi
              subs.  Returns false if it's a front for only a signle
              sub, __even_if_the_sub_is_declared_'multi'__.

  2. limited_mpd - Takes as its parameter an Array PMC containing integers
                   representing parameter types.  Returns either a new
                   sub-like PMC representing all the alternatives that match
                   the given parameter types, or a Null PMC.

(OK, OK, the actual vtable methods probably won't be called "mpd",
but _you_ try talking about multisubs without making MPD jokes.)

These functions are constructed in such a way as to allow multiple
refinement steps as required for multiple-colon multisub dispatch and
particularly for lazy parameters to multisubs.

PS: If the distance calculations don't already treat Any as being the
    same distance to all actual types, they should.
-- 
Chip Salzenberg <[EMAIL PROTECTED]>

Reply via email to