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