层次结构的简化版本:
module A where
import MyState
data A a = A (StateT MyState IO a) deriving (...)
现在有一个模块 MyState:
module MyState where
import SomeType
data MyState = MyState { st :: SomeType, ... }
最后是引入循环依赖的模块:
module SomeType where
import A
data SomeType = SomeType { f :: A (), ... }
如您所见,我的 SomeType 导入 A 是因为我们的一个字段需要它。并且 A 正在导入状态,该状态导入了某种引入循环依赖的类型。
解决这种循环依赖的方法是什么?谢谢。