Haskell:
Проверка существования директории
Как это сделать:
Haskell использует пакет directory
для взаимодействия с файловой системой. Установите его командой cabal install directory
, если вы еще этого не сделали. Вот как проверить наличие директории:
import System.Directory (doesDirectoryExist)
main :: IO ()
main = do
let dir = "path/to/your/directory"
exists <- doesDirectoryExist dir
putStrLn $ "Существует ли директория? " ++ show exists
Если dir
существует, ваш вывод будет:
Существует ли директория? True
В противном случае он покажет:
Существует ли директория? False
Подробнее
В прошлом вы, возможно, напрямую работали с системными вызовами или использовали библиотеки, менее абстрактные, чем directory
. Теперь этот пакет Haskell выполняет всю тяжелую работу.
Альтернативы? Вы могли бы использовать более низкоуровневые операции из пакета unix
, вызывать команды оболочки или писать свои собственные привязки FFI. Все это излишне для такой простой проверки.
Под капотом, doesDirectoryExist
использует системно-специфичные вызовы для проверки наличия директории без генерации исключения. Это действие ввода-вывода, отсюда и необходимость функции main
и IO ()
.
Смотрите также
Другие ресурсы, которые стоит рассмотреть:
- Ваша локальная документация по Haskell:
file:///usr/share/doc/ghc/html/libraries/directory/System-Directory.html
- Hackage для пакета
directory
: https://hackage.haskell.org/package/directory