John M. Dlugosz wrote:
> 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.

I just reviewed the threads in question; they're from December 2006.
Search the list archives for "supertyping" to find them.

The bottom line was that there were two competing visions of what
supertyping was supposed to do.  My own view was that supertyping
should be used as a way of extracting subsets of behavior out of a
preexisting role as new roles in such a way that the original role
would count as a subtype of the extracted roles, nominally as well as
structurally.  The other view involved using these extracted roles to
back-edit new behavior into existing roles.  Larry's final word on the
subject was to suggest a versioning mechanic whereas instead of
mutating a role to add new behavior, one would be able to create newer
versions of the role that included the new behavior while preserving
the older version for cases where the new behavior was inappropriate.

-- 
Jonathan "Dataweaver" Lang

Reply via email to