小编Sol*_*ren的帖子

Haskell - 解决循环模块依赖

假设我写下面的代码:

一个游戏模块

module Game where 
import Player
import Card 
data Game = Game {p1 :: Player,
                  p2 :: Player,
                  isP1sTurn :: Bool
                  turnsLeft :: Int
                 }
Run Code Online (Sandbox Code Playgroud)

一个播放器模块

module Player where
import Card
data Player = Player {score :: Int,
                      hand :: [Card],
                      deck :: [Card]
                     }
Run Code Online (Sandbox Code Playgroud)

和卡模块

module Card where
data Card = Card {name :: String, scoreValue :: Int}
Run Code Online (Sandbox Code Playgroud)

然后我写了一些代码来实现逻辑,玩家轮流从他们的手中抽取牌和牌来为他们的分数增加奖金,直到游戏结束.

但是,我意识到完成这段代码后,我写的游戏模块很无聊!

我想重构纸牌游戏,所以当你玩牌时,而不是仅仅添加一个分数,而是卡片任意改变游戏.

所以,我将Card模块更改为以下内容

module Card where
import Game
data Card = Card {name :: String, 
                  onPlayFunction :: …
Run Code Online (Sandbox Code Playgroud)

haskell cyclic-dependency

8
推荐指数
1
解决办法
768
查看次数

标签 统计

cyclic-dependency ×1

haskell ×1