2013-04-05 18 views
6

Ich habe diesen Code, mein Bedürfnis passt:Konvertiere [IO Int] zu IO [Int] in Haskell?

f :: [IO Int] -> IO [Int] 
f [] = return [] 
f (x:xs) = do 
    a <- x 
    as <- f xs 
    return (a:as) 

Aber ich thougth es wäre eine vordefinierte Art und Weise sein (MSUM?)

Aber ich kann nicht sehen, wie.

Jede Hilfe wäre willkommen. Thx

Antwort

22

Ja, es ist in der Standardbibliothek unter dem Namen sequence verfügbar. Es hat einen allgemeineren Typ als Ihre f: Monad m => [m a] -> m [a], da es für alle Monad funktioniert, nicht nur IO.

Sie könnten es selbst finden, indem Sie nach Typ [IO a] -> IO [a] auf Hoogle suchen.

+0

Dank Mikhail, genau das, was ich brauchte – asbxl