[m-dev.] subtypes discussion

Mark Brown dougl at cs.mu.OZ.AU
Sun Jan 5 02:03:46 AEDT 2003

On 04-Jan-2003, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> Did we resolve what happens if subtypes are used in the RHS of type
> definitions?  If so, what was the conclusion?

I was going to be conservative for the first implementation and disallow
them.  For now, if users want to use a subtype in some data structure they
must declare a base type (using a 'type' declaration) _and_ a subtype for
the data structure.  Likewise, I was only going to allow the basic form of
the declaration at first -- we can discuss later which variants of the
declaration should also be supported.

On the issue of existentially typed constructors:

On 25-Nov-2002, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> I think we should make a decision as to whether
>       (1) subtypes should implicitly inherit all the properties of the
>           supertype (with the actual subtype this being defined as the
>           intersection of the supertype with the constraints imposed by
>           the body of the subtype definition)
> or
>       (2) subtypes bodies are required to be an actual subtype of
>           the supertype.
> (1) allows for more concise source code.
> (2) means that the set of values which satisfy a subtype declaration
>     can be understood directly without needing to reference the supertype
>     definition.

The original proposal, and the discussion since, takes position (2),
with the exception that underscore variables implicitly inherit the base
type of the supertype.  So I think we all agree that position (2) is
generally the right choice, and I'll go with that one.  In particular:

> If we go with (2), then subtype declarations would be allowed to contain
> existential types and type class constraints (which would be required
> to match that in the main type).


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