2013-04-05 11 views
6

Mam ten kod, który pasuje moje potrzeby:Konwertuj [IO Int] na IO [Int] w Haskell?

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

Ale thougth nie byłoby predefiniowane sposób (msum?)

Ale nie widzę w jaki sposób.

Każda pomoc będzie mile widziane. Thx

Odpowiedz

22

Tak, jest dostępny w standardowej bibliotece pod nazwą sequence. Ma bardziej ogólny typ niż Twój f: Monad m => [m a] -> m [a], ponieważ działa dla każdego Monad, a nie tylko IO.

Można go znaleźć samodzielnie, wyszukując typ [IO a] -> IO [a] na Hoogle.

+0

Dzięki Michaelu, dokładnie to, czego potrzebowałem – asbxl