Ral*_*lph 3 haskell loops monad-transformers
我有一个返回monad的Haskell函数,声明如下:
data Options = Options {
optGames :: Int,
optSuits :: Int,
optVerbose :: Bool
} deriving Show
playGame :: Options -> StateT StdGen (WriterT [String] IO)) Bool
Run Code Online (Sandbox Code Playgroud)
此函数播放一个单人游戏,然后返回一个表示赢或输的布尔值,以及WriterTmonad中的日志.
我想调用此函数一定次数,每次使用random generator(StdGen)的"next"值,并将Bool返回值连接到一个列表中.
我尝试创建一个递归函数来执行调用,但无法弄清楚如何将monad传递到每个下一次迭代.
我想效仿
initial state >>= playGame >>= playGame ... -- repeat N times
Run Code Online (Sandbox Code Playgroud)
并收集所有结果Bool值,以及WriterTmonad中的日志条目.
做这个的最好方式是什么?