First class modules

Fergus Henderson fjh@cs.mu.oz.au
Thu, 9 Nov 2000 03:04:33 +1100


On 07-Nov-2000, Tom Pledger <Tom.Pledger@peace.com> wrote:
> Supposing that (some version of) Haskell had first class modules, and
> type variables could be universally quantified at the module level,
> would rule 2 of the monomorphism restriction go away?

No.

 |    Rule 2. Any monomorphic type variables that remain when type
 |    inference for an entire module is complete, are considered
 |    ambiguous, and are resolved to particular types using the
 |    defaulting rules (Section 4.3.4).

Although this rule refers to the "entire module", its typical for
the ambiguity to arise within a single function:

	foo = show (read "whatever")

This expression is fundamentally ambiguous unless you somehow
disambiguate what type it is that you are trying to read.
I don't see how first class modules could solve that.

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "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.