HaloO chromatic,

you wrote:
That was always my goal for roles in the first place. I'll be a little sad if Perl 6 requires an explicit notation to behave correctly here -- that is, if the default check is for subtyping, not polymorphic equivalence.


What is "polymorphic equivalence" to you? I remember us discussion the
issue of duck typing versus nominal typing. I'll try to dig that out.
But here is a version from memory using John's pointlike role:

  %h<x y new midpoint> = T.new(1), T.new(2), &new, &midpoint;

where &new and &midpoint refer to code objects with applicable
signature. Then I think that we have

   %h.does(Point) === False;
   %h.like(Point) === True;

with the second test being more elaborate and hence more expensive.

Regards, TSa.
--

"The unavoidable price of reliability is simplicity"  -- C.A.R. Hoare
1 + 2 + 3 + 4 + ... = -1/12  -- Srinivasa Ramanujan

Reply via email to