Как бороться с этой циклической зависимостью модуля в 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, который вводит циклическую зависимость.

Каков был бы способ разрешить эту циклическую зависимость? Благодарю.

0 ответов

Другие вопросы по тегам