On Fri, Mar 14, 2003 at 01:45:56PM +1100, Damian Conway wrote: : Oh, and I was wrong to originally write: C<multi *isa ...>
Sorry, you're not even wrong. :-) : Multimethods live in their own namespace. No * required. Alternately, we require the C<*> in order to accurately document their scope. And I do think they live in C<*>. Otherwise we need to come up with yet another name for the global scope that happens to contain multimethods. An argument can also be made that we should do that anyway on the grounds that we might someday have scoped multi-methods of some kind or other. I suppose can allow a C<sub *> in the same scope as C<multi *> for the case that you want a global override of all the multimethods. It just looks for the sub first. If that sub then wants to redispatch to the multimethods, it'd have to use some special multimethod syntax that doesn't look like a sub invocation, such as the notional ($a,$b,$c) forwhich foo() we talked about in Sebastopol, however we end up spelling "forwhich". It's really a kind of postpositional topicalizer for the following predicate. English doesn't really have any good ones of those. If I were Japanese, I'd spell it "wa" or "ga" or "no". Well, okay, I'd actually spell it "は" or "が" or "の" if I were *really* Japanese. :-) Larry