Thomas Sandlaß wrote:
Rod Adams wrote:
It seems to me that there are several advantages to making a group of multi with the same short name a single object, of type MultiSub|MultiMethod, which internally holds references to the all the various routines that share that short name.
It doesn't have to be junctive because for a multi it's irrelevant if it's a method or a sub. This distinction is used only at compile time of the class closure. So I guess there is a
class Multi is Code {...}
in Perl 6.
I wasn't intending it to be junctive. I was just noting that you needed separate holders for subs and methods, since you shouldn't be able to stuff a method into a multi sub.
It would behave like a tied sub (or method), with a .dispatch method to decide which of the contained routines should be called this particular time. Manhattan would be the default. However, one can override the dispatch logic; implementing Luke's Patterns idea, for example.
I see. Something like
use MMD::Manhattan; use MMD::Symmetric; use MMD::Pattern; ...
I was thinking more along the lines of :
use MMD::Pattern;
our &func is MMD::Pattern;
multi func (...) {...} multi func (... ...) {...} multi func (... ... ...) {...}
multi func2 (...) {...} multi func2 (... ...) {...} multi func2 (... ... ...) {...}
Where &func would get Pattern MMD, and func2 would get Manhattan MMD.
-- Rod Adams