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]>