Я пишу оболочку script (мой первый не-пример в haskell), который должен перечислить каталог, получить каждый размер файла, выполнить некоторые манипуляции с строкой (чистый код), а затем переименовать некоторые файлы. Я не уверен, что я делаю неправильно, поэтому 2 вопроса:
- Как мне организовать код в такой программе?
- У меня есть конкретная проблема, я получаю следующую ошибку: что я делаю неправильно?
error:
Couldn't match expected type `[FilePath]'
against inferred type `IO [FilePath]'
In the second argument of `mapM', namely `fileNames'
In a stmt of a 'do' expression:
files <- (mapM getFileNameAndSize fileNames)
In the expression:
do { fileNames <- getDirectoryContents;
files <- (mapM getFileNameAndSize fileNames);
sortBy cmpFilesBySize files }
код:
getFileNameAndSize fname = do (fname, (withFile fname ReadMode hFileSize))
getFilesWithSizes = do
fileNames <- getDirectoryContents
files <- (mapM getFileNameAndSize fileNames)
sortBy cmpFilesBySize files