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