小编uni*_*ant的帖子

在Haskell中映射IO

是否有传统的方法来映射使用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)

random io haskell

8
推荐指数
2
解决办法
3322
查看次数

标签 统计

haskell ×1

io ×1

random ×1