Jon Lang dataweaver-at-gmail.com |Perl 6| wrote:
IIRC, the supertyping proposal involved being able to "anti-derive"
roles from existing roles or classes, working from subtypes to
supertypes (or from derived roles to base roles) instead of the other
way around. The proposal got hung up on terminology issues,
specifically a discussion involving intensional sets vs. extensional
sets. I find this unfortunate, as I see a lot of potential in the
idea if only it could be properly (read: unambiguously) presented.
>From an "intensional set" perspective, a supertype would be a role
that includes the structure common to all of the classes and/or roles
for which it's supposed to act as a base role. From an "extensional
set" perspective, the range of values that it covers should span the
range of values that any of its pre-established "subtypes" cover. A
proposal was put forward to use set operations to create anonymous
supertypes, and then to provide them with names via aliasing; where it
got hung up was whether it should be based on a union of extensional
sets (i.e., combining the potential set of values) or on an
intersection of intensional sets (i.e., identifying the common
attributes and methods).
I agree that is unfortunate.
Perhaps, although you didn't show me that specific proposal (and reopen
the arguments), you explained the ideas behind them enough that I see
some of that description in the algorithm I used for the £ operator.
The synopses claims that classes are set-like. With generics we are
moving in the direction of intentions based. So there is the conflict.