Итак, я пишу игру в Haskell, и я выражаю очередь игрока как серию изменяющих состояние функций, которые коррелируют с различными фазами поворота. Первоначально это выглядело примерно так:Государственные монады: торговля одним шаблоном для другого?
let game' = phase1 game
game'' = phase2 game'
-- etc.
Главный кандидат на государственную монархию, не так ли? Это приводит к более элегантно:
do
phase1
phase2
-- etc.
Однако, то кажется, что я должен изменить phase1
, phase2
и др начать с шаблонным «государство получает» шаг:
phase1 = get >>= \game -> -- ...
Я m надеясь, что есть способ абстрагировать это, поэтому я могу избежать шаблона как у вызывающего, так и у вызывающего. Я просто слишком новичок, чтобы знать, что это такое (это мой первый настоящий проект Haskell). Любой совет?
'.... фаза 3. фаза 2 . phase1 $ game'? – kennytm