chromatic chromatic-at-wgz.org |Perl 6| 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.
Perhaps the default can be "like", not "isa", for cases where the actual
type is being captured in a generic argument too.
F-bounds type propagation only works if the actual assigned type is
tracked and further propagated through use of that symbol. Making it a
one-time assignment (actual type noticed when binding, and then type
noted as a generic) allows the full higher-order polymorphism to work
without needing to radically change the way typing works in the first
place--it's the same as declaring it of that type, which the type system
can handle already.
That make more sense if you just read the higher order parts (pun
intended; parts 18-20 or so) of "The Theory of Classification"
I will meditate on the idea of what happens if higher-order polymorphism
is the default for matching.