【发布时间】:2019-02-15 19:59:12
【问题描述】:
我正在使用猫库中的 State-Monad 来处理我在 Scala 中实现的纸牌游戏的状态。
我有一个函数simulateGame,它应该在当前状态为Over 时立即结束。函数如下所示。
def simulateGame: GameState[Outcome] = for {
action <- State.inspect[PlayerState, Action] { ... }
status <- step(action)
outcome <- ???
} yield outcome
step 函数返回当前步骤之后的状态。根据返回的状态,我想从状态中提取结果(这没问题,因为如果状态为Over,则对结果进行编码)或递归调用simulateGame 函数。
我不确定如何对状态进行模式匹配,然后进行递归调用。
感谢任何帮助!
【问题讨论】:
-
是否需要在模拟迭代之间传递当前状态?
标签: scala functional-programming monads scala-cats state-monad