Interesting discussion. Perl 6 will not need to encourage people to define their own
.can. Here's a paragraph from A12:
By the way, unlike in Perl 5 where .can returns a single routine
reference, Perl 6's version of .meta.can returns a "WALK" iterator
for a set of routines that match the name. When dereferenced, the
iterator gets fed to a dispatcher as if the method had been called
in the first place. Note that any wildcard methods (via delegation
or AUTOLOAD) are included in this list of potential handlers, so
there is little reason for subclasses to have to redefine .can to
reflect the new names. It does weaken the meaning of .can from
"definitely has a method of this name" to "definitely has one or
more methods in one or more classes that will try to handle this."
But that's probably closer to what you want, and the best we can do
when people start fooling around with wildcard methods under MI.
Also, we're making a clean separation between
AUTOLOAD, which does "wildcard" methods, and
AUTODEF, which may only supply a definition for predeclared (stubbed) methods or subroutines. (The delegation syntax
also makes a clear distinction between those methods we know the
name of in advance and those we don't.)