Я хотел бы посмотреть в моем текущем каталоге и только распечатать .zip
файлов.Как преобразовать IO [FilePath] в [FilePath]?
Моя стратегия (показано ниже) заключается в том, чтобы получить FilePaths как IO [FilePath]
. Я думал, что смогу поднять IO
, чтобы можно было фильтровать элементы строки.
Что не так в моих мыслях? Интересно, если это проблема, я использую liftIO
на IO [FilePath]
вместо 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
@AJFarmar Что за черт? 'liftIO' очень полезен и, конечно, не ужасный Haskell. Это не обязательно полезно здесь, но ваш совет, чтобы избежать его любой ценой, кажется нецелесообразным. –
У меня возникли проблемы с поиском канонического вопроса «IO a -> a'; но я нашел тот, который довольно близок. Если вы можете найти лучший, пожалуйста, пингуйте меня. –