
I have two modules Structure and Component. Module Structure defines data Structure = Component ... Module Component defines data Component = ... I would like Structure to import Component. But Component includes functions that take a Structure as an argument. So I have (or would like) something like this organization. Module Structure where import Component data Structure = Component ... Module Component where data Component = ... f :: Structure -> Component ->Structure The functions in Component are really very Component related and should not be moved to Structure. So how can I set up this circular relationship? I thought that one approach would be to do something like the following. But when I try I get all fouled up. Help would be appreciated. Module Structure where class Comp data Structure = Comp ... Module Component where import Structure data Component = ... instance Comp Component If I do this I get a complaint that class Comp needs a type parameter. If I give it an artificial one, that leads to all sorts of other problems. Is there a better way? Thanks. * -- Russ *