
Hi Lane,
It seems like a design flaw that Prelude.hs is mutually dependent on several other modules. My work so far has led me to suspect that mutually dependent modules are never necessary. (And always annoying.)
Me and Tom came up with a solution. Write a SuperPrelude, which is the real (behind the scenes) Prelude. This includes the transitive closure of the Prelude, i.e. Ratio as well - probably split into separate files and included via cpp. Then the real Prelude is now a normal module, which just reexports various bits in SuperPrelude. This kills all renaming issues and recursive module issues in one step. We did try this, unfortunately the Yhc renamer is sufficiently broken that Prelude is a very special module, whose name shall live on forever. The renamer needs to die. As for mutually recursive modules, the make system now has support for compiling them in parallel. The parser can probably cope with this, but the type checker would die somewhat spectacularly. One day... Thanks Neil