次のように宣言されたモナドを返す Haskell 関数があります。
data Options = Options {
optGames :: Int,
optSuits :: Int,
optVerbose :: Bool
} deriving Show
playGame :: Options -> StateT StdGen (WriterT [String] IO)) Bool
この関数は、1 ゲームのソリティアをプレイし、勝敗を示すブール値とWriterT
モナドのログを返します。
この関数を一定回数呼び出したいと思います。そのたびに、ランダム ジェネレーターの「次の」値 ( ) を使用し、戻り値をリストにStdGen
連結します。Bool
呼び出しを行う再帰関数を作成しようとしましたが、モナドを次の各反復に渡す方法がわかりません。
真似したい
initial state >>= playGame >>= playGame ... -- repeat N times
結果のすべての値と、モナドBool
からのログエントリを収集します。WriterT
これを行う最善の方法は何ですか?