簡略化された階層:
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 をインポートします。これは、フィールドの 1 つに必要だからです。そして A は、循環依存を導入する何らかのタイプをインポートする状態をインポートしています。
この循環依存を解決するにはどうすればよいでしょうか? ありがとう。