On 14-Dec-2001, David Feuer <[EMAIL PROTECTED]> wrote: > Well, I've been doing some more stupid thinking, and I've decided that I > am not satisfied with the module system in haskell, or the way it deals > with namespaces. It seems to me that there are four kinds of things > that need to be dealt with: classes, instances, types, values, and > possibly some kind of ML-style structures/functors. > > I see no good reason not to treat a class declaration similarly to the > way Haskell treats modules. For example, if I have a class > > class A x where > f1::... > f2::... > > I would like to access the functions by writing > A.f1, A.f2, etc. There should, however, be some way to unqualify the > names, the way ML allows structures to be opened.
A proposal very similar to this has recently been suggested on the mercury-developers mailing list [1]. This proposal, and others related to it, have then been discussed at some length. See the threads titled "Module qualification of typeclass methods" [1] "Automatic inclusion of modules" [2], and "Module system discussion" [3]. One drawback with this proposal was noted by Simon Taylor: | The proposal is also a step backwards for classes that are already | defined in a module of the same name, for example library/enum.m. | With the proposed change, the methods of that class would be | enum__enum__to_int and enum__enum__from_int. > Finally: I want nested modules!!! They probably couldn't be compiled > separately, but they'd provide some namespace control. Mercury supports separate compilation of sub-modules. Mercury has two kinds of sub-modules, "nested modules", which are physically nested in the same source file, and "separate sub-modules", where the parent (containing) module just contains a `:- include_module' declaration naming the child module, and the source code for the child module occurs in a separate file. You get separate compilation of separate sub-modules. [1] <http://www.cs.mu.oz.au/research/mercury/mailing-lists/mercury-developers/mercury-developers.0110/0066.html> [2] <http://www.cs.mu.oz.au/research/mercury/mailing-lists/mercury-developers/m ercury-developers.0111/0082.html> [3] <http://www.cs.mu.oz.au/research/mercury/mailing-lists/mercury-developers/m ercury-developers.0111/0097.html>. -- Fergus Henderson <[EMAIL PROTECTED]> | "I have always known that the pursuit The University of Melbourne | of excellence is a lethal habit" WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp. _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe