2013-04-05 41 views
6

tôi có mã này phù hợp với nhu cầu của tôi:Chuyển đổi [IO Int] thành IO [Int] trong Haskell?

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

Nhưng tôi thougth sẽ có một cách xác định trước (msum?)

Nhưng tôi không thể nhìn thấy như thế nào.

Mọi trợ giúp đều được hoan nghênh. Thx

Trả lời

22

Có, nó có sẵn trong thư viện chuẩn dưới tên sequence. Nó có loại chung hơn số f: Monad m => [m a] -> m [a] của bạn, vì nó hoạt động cho bất kỳ Monad, không chỉ IO.

Bạn có thể tự tìm kiếm bằng cách tìm kiếm loại [IO a] -> IO [a] trên Hoogle.

+0

Cảm ơn Mikhail, chính xác những gì tôi cần – asbxl