
El Mar 5, 2015, a las 8:43, Konstantin Saveljev
Hello,
I'm having some trouble with cyclic dependency.
My simplified version of hierarchy:
module A where
import MyState
data A a = A (StateT MyState IO a) deriving (...)
Now there is a module MyState:
module MyState where
import SomeType
data MyState = MyState { st :: SomeType, ... }
Finally the module that introduces cyclic dependency:
module SomeType where
import A
data SomeType = SomeType { f :: A (), ... }
I have been suggested to move the types into one module and then import it wherever needed. But the problem is that even if I put them into one file those three data types still form a cyclic dependency and compiler throws errors saying "i don't know about this"
So if I have a single module:
data A a = A (StateT MyState IO a) deriving (...) data MyState = MyState { st :: SomeType, ... } data SomeType = SomeType { f :: A (), ... }
With this setup the compiler is gonna tell us it doesn't know about MyState. And no matter how we shuffle these types within a file we are still getting some "unknowns"
Did you try it? It should work fine -- haskell doesn't care about the order of data declarations within a file. Tom
How would one approach such a problem?
Best regards, Konstantin _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners