Tôi có hai mô-đun nhập khẩu lẫn nhau. Haskell không hỗ trợ các mô-đun đệ quy. Vậy làm thế nào tôi có thể viết lại các kiểu dữ liệu của mình mà không cần hệ thống mô-đun vòng tròn.Định nghĩa mô-đun đệ quy/tròn Haskell?
Đây là Character.hs tôi
module Character where
import ItemSystem
data Character = Character { name :: String, items :: [Item] }
một ở đây là ItemSystem.hs
module Item where
import Character
data ItemEffect = CharacterEffect (Character -> Character)
| ItemEffect (Item -> Item)
data Item = Item { name :: String, weight :: Int, effect :: ItemEffect }
UPDATE:. Tôi sẽ viết tất cả các kiểu dữ liệu của tôi vào một module :(
Bạn có thể đặt chúng trong một mô-đun –
@AdamWagner ItemSystem không đơn giản như tôi đã viết ở trên vì vậy tôi cần chia thành hai mô-đun. –
Lưu ý rằng GHC * có * hỗ trợ [một số mô-đun đệ quy lẫn nhau] (http://www.haskell.org/haskellwiki/Mutually_recursive_modules). – ehird