[m-dev.] Existentially quantified data constructors

Jakob Puchinger jakobp at csse.unimelb.edu.au
Wed Apr 16 11:05:16 AEST 2008

>  I'm not saying the Reference Manual is unclear, just that it tells you
>  what, not why.  Perhaps the problem is just with me, but I reckon I'm not
>  alone: the picture I have when I'm programming is that a type class
>  specifies an interface implemented by a vector of types.  Where things
>  start to get fuzzy is with the restrictions.  I remember a certain list
>  of "do"s and "don't"s (don't use equivalence types in instance
>  declarations, don't repeat variables in instance declarations, instance
>  variable arguments must be of the form typector(typevar, typevar, ...),
>  don't mix existentially and universally quantified variables in the same
>  constraint, etc.), but I'm damned if I can remember why any of those
>  restrictions are necessary.  It would be Very Helpful if for each
>  restriction we could provide a simple example somewhere of *why*
>  violating it leads to ambiguity/unsoundness/madness/divorce.  Whether
>  this document would belong in the RM or not is neither here nor there.

I would also be very interested in such a document!

mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list