Tengo dos módulos que se importan entre sí. Haskell no admite módulos recursivos. Entonces, ¿cómo puedo reescribir mis tipos de datos sin necesidad de un sistema circular de módulos?Haskell recursivo/definiciones de módulos circulares?
Aquí está mi Character.hs
module Character where
import ItemSystem
data Character = Character { name :: String, items :: [Item] }
Aquí está una ItemSystem.hs
module Item where
import Character
data ItemEffect = CharacterEffect (Character -> Character)
| ItemEffect (Item -> Item)
data Item = Item { name :: String, weight :: Int, effect :: ItemEffect }
ACTUALIZACIÓN:. Voy a escribir mis todos los tipos de datos en un módulo :(
Podrías ponerlos en un módulo –
@AdamWagner ItemSystem no es tan simple como escribí arriba, así que necesito dividirme en dos módulos. –
Tenga en cuenta que GHC * does * support [algunos módulos mutuamente recursivos] (http://www.haskell.org/haskellwiki/Mutually_recursive_modules). – ehird