[m-dev.] Ye Olde Subtyping Proposal
Fergus Henderson
fjh at cs.mu.OZ.AU
Tue Nov 19 13:18:30 AEDT 2002
On 18-Nov-2002, Ralph Becket <rafe at cs.mu.OZ.AU> wrote:
> Fergus Henderson, Monday, 18 November 2002:
> > Actually subtypes would need to get checked in the mode checker, not the
> > type checker, because you need to know the direction of data-flow in
> > order to check subtypes.
>
> We have a number of places that need tweaking to make this change, but
> putting in a subtyping relation that is checked by the type checker
> shouldn't be too hard, surely?
Should the following example be legal?
:- type fruit ---> apple ; orange.
:- subtype citrus < fruit ---> orange.
:- mode m == ...
:- pred p(fruit::m).
:- external(p/1).
:- pred q(citrus::m).
q(X) :- p(X).
My opinion is that it should be legal if m == out, but not if m == in.
Next consider a similar example, but using mode inference rather than
declared modes. If the type checker has to do mode inference in order
to determine type-correctness, then we have a problem...
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list