首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复调用Haskell monad

重复调用Haskell monad
EN

Stack Overflow用户
提问于 2012-06-09 04:51:00
回答 1查看 2.3K关注 0票数 5

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

代码语言:javascript
复制
data Options = Options {
    optGames :: Int,
    optSuits :: Int,
    optVerbose :: Bool
  } deriving Show

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

此函数玩单人纸牌游戏,然后返回一个指示输赢的布尔值,以及WriterT monad中的日志。

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

我尝试创建一个递归函数来执行调用,但不知道如何将monad传递到下一次迭代中。

我想效仿一下

代码语言:javascript
复制
initial state >>= playGame >>= playGame ... -- repeat N times

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

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-09 05:08:26

我想你是在找replicateM吧。这会将给定的操作重复指定的次数,并以列表形式返回结果。因此,replicateM n playGame相当于玩游戏n次并获得结果列表。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10955889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档