[m-dev.] Foreign type compare and unification
Peter Schachte
schachte at cs.mu.OZ.AU
Tue May 21 14:01:26 AEST 2002
On Tue, May 21, 2002 at 01:46:21PM +1000, Ralph Becket wrote:
> I don't think, however, that I want every type to be a member of every
> type class that has a complete set of default method implementations.
> That would lose me a good deal of error spotting on the part of the
> compiler.
No problem. It wouldn't be hard to have a :- default_class
declaration that's just like a :- class declaration, except that it
adds the requirement that *every* method has a default implementation,
and means that every type is implicitly a member. Or alternatively,
some addendum in a :- class declaration itself marks it as having
every type as a default instance. This still has the advantage of
making this sort of class just a special case of an ordinary class.
> This is a problem for dynamically loaded code, but less so for
> statically linked programs. Fergus has an argument that this is the
> right thing to do (I'll let him explain it.)
As I understand it, each type in Mercury can be an instance of a class
in at most one way. So adding an instance declaration anywhere in the
program, or even just linking in a new module that contains an
instance declaration, can make a valid Mercury program invalid. And
it does so in a way that doesn't have an obvious, easy work around.
--
Peter Schachte He that waiteth for all men to be satisfied with
schachte at cs.mu.OZ.AU his plan, let him seek eternal life, for he
www.cs.mu.oz.au/~schachte/ shall need it.
Phone: +61 3 8344 9166 -- Mark Twain
--------------------------------------------------------------------------
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