A12 sez:

  If your delegation object happens to be an array:

    has @:handlers handles 'foo';

  then something cool happens. <cool rays> In this case
  Perl 6 assumes that your array contains a list of potential
  handlers, and you just want to call the first one that
  succeeds.

This is not clear, and I'm not liking it at the moment anyway. It has the
effect of saying:

"If you HAS-A attribute that is an array, you cannot delegate to it, but if
you IS-A array, no worries."

So Queue classes that start out:

  class Queue is Array {...}

can get push/pop/splice whatever methods for free, but:

  class Queue is PersistentObject
  {
    has @:elements handles «push pop splice»;

can not work (unless one of the things inside @:elements happens to be an
array).


Also, it's not clear:

  "first one that succeeds"

Does that mean "First one for which a matching method exists" or does it
mean "First one for which a method exists that does not C<fail> or return
undef or some other badness"?

=Austin



Reply via email to