从IO操作列表中提取值

And*_*yuk 10 monads haskell

所以我有类似的东西:

[IO Blah, IO Blah, IO Blah]
Run Code Online (Sandbox Code Playgroud)

我真的只想要一个Blahs 列表,我该怎么做?

PS:是的,我在IO功能中工作.

dav*_*420 16

使用sequence.

从左到右评估序列中的每个操作,并收集结果.

do blahs <- sequence listOfIoBlah
   -- now use blahs
Run Code Online (Sandbox Code Playgroud)


Dan*_*att 9

如果您知道如何将问题表述为一种类型,那么Hoogle在回答这些问题时非常有用,例如:http://www.haskell.org/hoogle/ ? hoogle =%5BIO + a%5D + -% 3E + IO +%5Ba上%5D


fuz*_*fuz 8

你想要的是什么sequence :: Monad m => [m a] -> m [a].它按预期工作:所有操作按顺序执行,结果被收集并返回.请注意,除非所有命令都已完成,否则不会返回任何内容.