相关疑难解决方法(0)

Haskell - 如何避免一遍又一遍地键入相同的上下文?

我最近开始了一个小爱好项目,在那里我尝试实施技巧卡片游戏Skat(3名玩家).为了能够让不同类型的玩家(如AI,网络和本地)一起玩,我使用类型类设计了一个界面Player:

class Monad m => Player p m | p -> m where
  playerMessage :: Message answer -> p -> m (Either Error answer,p)
Run Code Online (Sandbox Code Playgroud)

我用a StateT来结束这三个玩家:

type PST a b c m x = StateT (Players a b c) m x
Run Code Online (Sandbox Code Playgroud)

但是现在,我必须在每个类型签名中写一大堆上下文:

dealCards :: (Player a m, Player b m, Player c m, RandomGen g)
  => g -> PST a b c m (SomeOtherState,g)
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免一次又一次地写这个大背景?

haskell

22
推荐指数
2
解决办法
1175
查看次数

标签 统计

haskell ×1