2013-04-05 19 views
6

Ho questo codice che si adatta il mio bisogno:Converti [IO Int] in IO [Int] in Haskell?

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

Ma io thougth ci sarebbe un modo predefinito (Msum?)

ma non riesco a vedere come.

Qualsiasi aiuto sarebbe benvenuto. Thx

risposta

22

Sì, è disponibile nella libreria standard sotto il nome sequence. Ha un tipo più generale del tuo f: Monad m => [m a] -> m [a], poiché funziona per qualsiasi Monad, non solo per IO.

È possibile trovarlo da soli cercando il tipo [IO a] -> IO [a] su Hoogle.

+0

Grazie Mikhail, esattamente quello di cui avevo bisogno – asbxl