在Haskell中使用IO进行映射?

问题描述

| 嗨,我需要有关haskell中的地图功能和IO操作的帮助。 我有一个类似于
[(x,(y,z))]
的列表,我想给列表中的每个项目一个函数,所以我想使用
map
的问题是,该函数看起来像:
test :: (String,(String,String)) -> IO (String,String,String))
test (a,(b,c)) = do
    -- some IO stuff
    return (a,b,(c,c))
但是当我尝试使用map(
map test myList
)时,由于是
IO
,我得到一个错误,如何解决呢?     

解决方法

您是否尝试使用
mapM
(来自
Control.Monad
)? (抱歉,没有更多的代码,我只能猜测)     ,因为
test
位于
IO
monad中,所以您必须使用
mapM
参见此处,此处和此处了解详细信息。