Alex,
If I were you I'd dispense with "deriving(Read,Show)" in module Publisher,
and add an explicit instance for Read/Show on Publisher in PublisherDB.
That would solve your circularity problem.
Haskell does permit mutually recursive modules, but Hugs does not support
them, and GHC requires
I wanted to represent a reasonably small list of Publishers.
So I created:
module Publisher where
data Publisher = Publisher { name::String, func::Registration-Bool}
data Registration =
Registration { data::String, pub::Publisher} deriving (Read,Show)
Notice that the Publisher data