[Haskell-beginners] cyclic dependency problem

amindfv at gmail.com amindfv at gmail.com
Thu Mar 5 14:25:03 UTC 2015



El Mar 5, 2015, a las 8:43, Konstantin Saveljev <konstantin.saveljev at gmail.com> escribió:

> 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 at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


More information about the Beginners mailing list