我最近開始了一個小小的hobby project,在那裏我嘗試實施詭計多端的卡牌遊戲Skat(3名玩家)。Haskell - 如何避免一遍又一遍地輸入相同的上下文?
class Monad m => Player p m | p -> m where
playerMessage :: Message answer -> p -> m (Either Error answer,p)
我用StateT
包裹起來的三名球員:
Player
設計了一個
interface
type PST a b c m x = StateT (Players a b c) m x
但現在,我不得不寫一大堆語境在每種類型的簽名:
dealCards :: (Player a m, Player b m, Player c m, RandomGen g)
=> g -> PST a b c m (SomeOtherState,g)
如何避免一次又一次地寫這個大背景?
你的代碼在哪裏?您可能會獲得更多有用的建議和更多上下文。這裏的代碼給我的感覺就像是一些比你實際需要的更一般的東西,並且可以通過專注於有意義的東西來相應簡化,但是如果沒有更大的上下文,我不能確定。 –
@camccann它發表在[GitHub](https://github.com/fuzxxl/Unter)上。 github上的代碼有點不同,因爲我目前正在進行大量的重構以使我的生活更輕鬆。 – fuz
@FUXxxl - 隨機評論 - 你應該在每個模塊的基礎上指定擴展名 – alternative