I think the report has it about right.
* A conforming implementation of Haskell 1.4 must support mutually recursive
modules. That is, a collection of individually legal mutually recursive
modules is a legal Haskell program.
* The Report recognises that implementations available in
| Why muddle implementation with language design? Pick a design that
| we know everyone can implement -- e.g., exported functions must have
| type declarations -- and stick to that. When the state of implementations
| improve, the specification for Haskell 1.5 can change accordingly. -- P
This isn't muddling implemenation with language design. The language design
says mutual recursion is OK. A particular implementation supporting separate
compilation will typically require a variety of "help", such as a Makefile
with accurate dependencies. Requiring type signatures, or