[m-dev.] Ye Olde Subtyping Proposal

Mark Brown dougl at cs.mu.OZ.AU
Tue Nov 12 19:59:16 AEDT 2002


On 12-Nov-2002, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> On 11-Nov-2002, Mark Brown <dougl at cs.mu.OZ.AU> wrote:
> > I haven't seen any proof that the proposed inference is sound, and I
> > feel strongly that we should not proceed with this part of the proposal
> > unless such a proof is seen.
> 
> The proof is along the same lines as the proof of "free theorems"
> in functional programming [1].
> See below for a very brief sketch.

Those results apply to _unconstrained_ polymorphism.  Here is another
example:

	:- typeclass foo(T) where [ func foo = T ].

	:- type bar ---> a ; b.
	:- instance foo(bar) where [ (foo = a) ].

	:- pred p(T, T) <= foo(T).
	:- mode p(in, out) is det.

	p(X, foo(X)).

In this case the implicit polymorphic mode would be wrong.

Cheers,
Mark.

--------------------------------------------------------------------------
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