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.
data Structure = Comp ...
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