[Haskell-cafe] mutually recursive modules

ajb at spamcop.net ajb at spamcop.net
Fri Sep 24 22:21:52 EDT 2004


G'day all.

Quoting Henning Thielemann <iakd0 at clusterf.urz.uni-halle.de>:

> Why can't GHC and Hugs go this way?

As Alastair noted, the problem is that Haskell allows you to export
symbols from a module whose types are unknown unless you type-check
modules that it imports.  Simple example:

     module A where
     import B
     a = b

     module B where
     import A
     b = a

This is only a problem for exported symbols which have no type
declarations.  As Alastair said:

> I guess that leaves two options:
>
> 1) Insist on a prototype for any exported function.
> 2) Insist on a prototype for any imported function which is used.
>
> The latter is more in keeping with Haskell's lazy checking of import clashes.

That's true, but you have to ask why you're exporting a function if
you're not going to use it.  On the other hand, in the presence of
Haskell's "export everything" feature, it makes a certain amount of
sense.

Cheers,
Andrew Bromage


More information about the Haskell-Cafe mailing list