gpt4 book ai didi

haskell - 重复调用 Haskell monad

转载 作者:行者123 更新时间:2023-12-02 12:10:48 25 4
gpt4 key购买 nike

我有一个返回 monad 的 Haskell 函数,声明如下:

data Options = Options {
optGames :: Int,
optSuits :: Int,
optVerbose :: Bool
} deriving Show

playGame :: Options -> StateT StdGen (WriterT [String] IO)) Bool

此函数玩单人纸牌游戏,然后返回一个指示胜利或失败的 bool 值,以及 WriterT monad 中的日志。

我想调用此函数一定次数,每次使用随机生成器 (StdGen) 的“下一个”值,并连接 Bool将值返回到列表中。

我尝试创建一个递归函数来执行调用,但无法弄清楚如何将 monad 传递到每个下一个迭代中。

我想效仿

initial state >>= playGame >>= playGame ... -- repeat N times

并收集所有生成的 Bool 值,以及来自 WriterT monad 的日志条目。

最好的方法是什么?

最佳答案

我认为您正在寻找replicateM。这会重复给定的操作指定的次数,并以列表形式返回结果。因此,replicateM n playGame 相当于玩游戏 n 次并获取结果列表。

关于haskell - 重复调用 Haskell monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com