Как бороться с этой циклической зависимостью модуля в Haskell
Упрощенная версия иерархии:
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 импортирует состояние, которое импортирует sometype, который вводит циклическую зависимость.
Каков был бы способ разрешить эту циклическую зависимость? Благодарю.