【发布时间】:2015-05-08 16:09:30
【问题描述】:
我想查看当前目录并仅打印 .zip 文件。
我的策略(如下所示)是将 FilePaths 设为IO [FilePath]。我想我可以解除 IO 以便可以过滤字符串元素。
我的想法有什么问题?我想知道我在IO [FilePath] 上使用liftIO 而不是IO FilePath 是否有问题。
import System.Directory
import System.FilePath.Glob
import Control.Monad.IO.Class
main :: IO()
listCompressedImages folder =
filter (match (compile ".zip")) (liftIO (getDirectoryContents folder))
main = listCompressedImages "." >>= print
【问题讨论】:
-
从不,从不,从不使用
liftIO!如果您使用liftIO,那么您正在练习糟糕的Haskell。我知道你是新人,但你需要学习! -
@AJFarmar 这到底是怎么回事?
liftIO非常有用,当然也不是糟糕的 Haskell。它在这里不一定有用,但您不惜一切代价避免它的建议似乎偏离了目标。 -
我找不到规范的
IO a -> a问题;但我找到了一个非常接近的。如果你能找到更好的,请联系我。 -
@daniel wagner。我同意另一个问题提供了适用于我的答案 - 我应该删除我的问题吗?
-
@hotGopher 我认为没有理由删除它。标记为重复就足够了(这已经完成了)。