Я пытаюсь написать пасьянс "Паук" в качестве обучающего упражнения на Haskell.
Моя функция main
будет вызывать функцию playGame
один раз для каждой игры (используя mapM
), передавая номер игры и генератор случайных чисел ( StdGen
). Функция playGame
должна возвращать монаду Control.Monad.State
и монаду IO, содержащую String
, показывающую игровую таблицу, и Bool
. ] указывает, была ли игра выиграна или проиграна.
Как объединить монаду State
с монадой IO
для возвращаемого значения? Каким должно быть объявление типа для `playGame?
playGame :: Int -> StdGen a -> State IO (String, Bool)
Правильно ли State IO (String, Bool)
? Если нет, то каким он должен быть?
В main
я планирую использовать
do
-- get the number of games from the command line (already written)
results <- mapM (\game -> playGame game getStdGen) [1..numberOfGames]
Это правильный способ вызова playGame
?