Я пытаюсь написать Пасьянс Паука в качестве учебного упражнения 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?