是否有传统的方法来映射使用IO的函数?具体来说,我想映射一个返回某种随机值的函数.使用法线贴图将产生类型([IO b])的输出,但要从IO中解压缩列表中的值,我需要一些类型(IO [b]).所以我写了......
mapIO :: (a -> IO b) -> [a] -> [b] -> IO [b]
mapIO f [] acc = do return acc
mapIO f (x:xs) acc = do
new <- f x
mapIO f xs (new:acc)
Run Code Online (Sandbox Code Playgroud)
......工作正常.但似乎应该有一个内置于Haskell的解决方案.例如,一个示例用例:
getPercent :: Int -> IO Bool
getPercent x = do
y <- getStdRandom (randomR (1,100))
return $ y < x
mapIO (\f -> getPercent 50) [0..10] []
Run Code Online (Sandbox Code Playgroud)