Section 3.2's example does not fail for the given reason "This tries to
access the c instance variable of the argument $b thus yielding a run-time
error" - instead Perl6 more correctly complains that it was expecting a
ColPoint, but got a Point instead. Indeed one cannot generally replace a
subtype with its parent type, only the other way around. Can correct by
re-writing along the lines of "This fails to dispatch because ColPoint's
equal method requires a ColPoint argument, but we are calling it with the
supertype Point, which does not compose with the method's signature."

(Furthermore if "equal" is defined as a "multi method," then the dispatcher
chooses Point's "equal" method, and the example returns "True," which all
looks good to me. But it doesn't illustrate the paper's point.)

-y

Reply via email to