Я использую State-Monad из библиотеки кошек, чтобы позаботиться о состоянии карточной игры, которую я реализую в Scala.
У меня есть функция simulateGame
, которая должна завершиться, как толькостатус текущего состояния Over
.Функция выглядит следующим образом.
def simulateGame: GameState[Outcome] = for {
action <- State.inspect[PlayerState, Action] { ... }
status <- step(action)
outcome <- ???
} yield outcome
Функция step
возвращает состояние после текущего шага.В зависимости от возвращенного состояния я хочу либо извлечь результат из состояния (это не проблема, поскольку результат закодирован, если статус Over
), либо выполнить рекурсивный вызов функции simulateGame
.
Я не уверен, как сопоставить шаблон в статусе и затем выполнить рекурсивный вызов.
Любая помощь приветствуется!