<分区>
Possible Duplicate:
haskell-problem: io string -> [int]
如何将 Haskell IO 列表转换为普通列表?
IO [value] -> [value]
是否有任何内置函数可以执行此操作?
标签 haskell
<分区>
Possible Duplicate:
haskell-problem: io string -> [int]
如何将 Haskell IO 列表转换为普通列表?
IO [value] -> [value]
是否有任何内置函数可以执行此操作?
最佳答案
有很多方法可以满足您的要求,但这是不安全的。因此,我认为你应该反过来看问题。为了避免从 IO
中获取列表,您应该将纯函数提升到 IO
中。
假设您想从数据库中获取列表并对其应用一些纯函数,那么您可以执行以下操作:
yourFunc = do
list <- getListFromDB
return (myPureFunction List)
或者如果你想在后面打印结果:
yourFunc = do
list <- getListFromDB
print (myPureFunction List)
一般来说,为了计算一个纯 在 IO monad 中的结果你可以使用 let:
yourFunc = do
list <- getListFromDB
let result = myPureFunction list
return result
或更紧凑:
import Control.Monad((=<<))
import Control.Applicative((<$>))
yourFunc = print =<< myPureFunction <$> getListFromDB
关于haskell - 将 Haskell IO 列表转换为列表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802331/