[m-dev.] Module qualification of typeclass methods

Simon Taylor stayl at cs.mu.OZ.AU
Tue Oct 30 20:33:26 AEDT 2001


On 30-Oct-2001, Peter Ross <peter.ross at miscrit.be> wrote:
> On Tue, Oct 30, 2001 at 05:23:29PM +1100, Tyson Dowd wrote:
> > On 29-Oct-2001, Peter Ross <peter.ross at miscrit.be> wrote:
> > > However we could allow the typeclass declaration to introduce a new
> > > namespace, thus the fully qualified name would become
> > > 
> > >     mod__foo__bar(X)
> > 
> > Can you explain to the viewers at home what the problem is with
> > 
> > :- module mod.
> > :- module foo.
> > :- typeclass foo(T) where
> > [
> >     bar(T) = int
> > ].
> > :- end_module foo.
> > 
> > Which appears to do the same thing...
> > 
> To use the typeclass foo one must now import the module mod__foo.  This
> must be done for each typeclass the user wishes to use.  This seems
> unecessary to me because we already have another mechanism we could use
> for distinguishing between two typeclasses at the same module level.
> 
> However the current option of using sub-modules doesn't sound too
> bad until you consider how it scales.
> 
> Our prototype system for interoperability with .NET objects maps each
> object to a typeclass.  Each of these typeclasses may have names which
> conflict with the same name in another typeclass, hence we have to place
> each typeclass in a seperate sub-module.  The mscorlib assembly has 883
> public types in it, so a reasonable use of this library may require 20
> or 30 imports just to use a subset of its types effectively.  I can
> assure you that this is very annoying.

Would it be better to add an `import_package' declaration, which
is like `import_module', but also imports all sub-modules of the
imported modules.

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