在Haskell中如何将[IO Int]转换为IO [Int]?

5
我有这段满足我需求的代码:
f :: [IO Int] -> IO [Int]
f [] = return []
f (x:xs) = do 
  a <- x
  as <- f xs
  return (a:as)

但我认为会有一种预定义的方式(msum?)

但我不知道如何做到。

任何帮助都将受到欢迎。谢谢

1个回答

21

是的,它在标准库中以sequence的名字可用。它具有比你的f更通用的类型:Monad m => [m a] -> m [a],因为它适用于任何Monad,而不仅仅是IO

你可以通过在Hoogle上搜索类型[IO a] -> IO [a]来找到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接