#clean-language
#чистый язык
Вопрос:
Я использую Cleanide для Clean3.0
языка программирования. Что я пытаюсь сделать, так это реализовать функцию, которая получает имя каталога в моей системе и возвращает список всех файлов в этом каталоге.
Я не знаю, должно ли определение такой функции быть таким, File -> [string]
или, может быть, что-то еще, даже если этот каталог является файлом, возможно, разработчики Clean
имели в виду не это…
Большое спасибо!
Ответ №1:
Эта функциональность недоступна в среде StdEnv, но есть две библиотеки, которые могут помочь с этим:
-
Библиотека Directory содержит каталог модуля, который имеет функцию
getDirectoryContents :: !Path !*env -> (!(!DirError, [DirEntry]), !*env) | FileSystem env
. -
Библиотека платформы содержит модульную систему.Каталог, в котором есть функция
readDirectory :: !FilePath !*w -> (!MaybeOSError [FilePath], !*w)
.
В обоих случаях первым аргументом является путь к каталогу, а вторым аргументом является *World
, что является типичным способом Clean для выполнения нечистых операций (см. Главу 9 Отчета о языке).
Примеры кода
С помощью Directory:
import Directory
Start w
# (dir,w) = getDirectoryContents (RelativePath []) w
= dir
С помощью платформы:
import System.Directory
Start w
# (dir,w) = readDirectory "." w
= dir
Комментарии:
1. Большое спасибо. Пожалуйста, учтите тот факт, что я новичок, можете ли вы опубликовать пример кода?
2. @ZENir Я обновил ответ примерами для обоих модулей.
3. Спасибо. Я все еще не уверен, как получить содержимое определенного каталога. допустим,
"C:UsersUsermyDir"
можете ли вы помочь мне с этим?4. @ZENir Вы бы использовали это в качестве первого аргумента. Так, например,
"C:\Users\User\myDir"
для платформы илиAbsolutePath "C" [PathDown "Users",PathDown "User",PathDown "myDir"]
для каталога.