On 21-Dec-2000, George Russell <[EMAIL PROTECTED]> wrote:
> (3) Finally it would be nice to extend the module syntax to allow named
>     instances to be selectively exported and imported, just like variables.  

Mercury's module system allows instance declarations (which, as in
Haskell 98, are unnamed) to be selectively exported.

        :- module foo.
        :- interface.

            :- import_module enum.

            :- type t.
            :- instance enum(t).

        :- implementation.

            :- instance enum(t) where [ ... ].

Mercury doesn't directly support selective import -- you can only
import a whole module, not part of it.  But if you really want that
you can achieve it by putting each instance declaration in its own
nested module.

        :- module foo.
        :- interface.
        :- import_module enum.

           :- type t.

           :- module enum_t.
           :- interface.
           :- instance enum(t).
           :- end_module enum_t.

        :- implementation.

           :- module enum_t.
           :- implementation.
           :- instance enum(t) where [ ... ].
           :- end_module enum_t.

-- 
Fergus Henderson <[EMAIL PROTECTED]>  |  "I have always known that the pursuit
                                    |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to