kb
22.01.2013 06:39 04a3831c
Легко понять, когда тебе пора выносить "чистый" код куда-нибудь http://screencloud.net/v/6wVj
Легко понять, когда тебе пора выносить "чистый" код куда-нибудь http://screencloud.net/v/6wVj
с первой же строчки вопрос: зачем у canonicalizePath не «чистый» тип результата? разве функция «путь» → «каноничный путь» — не функция?
ну, он, по идее, умеет там всякие символические ссылки и прочее резолвить. короче на почитай http://hackage.haskell.org/packages/arch...
у меня хакедж не работает сегодня что-то
в основном для превращения относительных путей в абсолютные, короче говоря
вообще, раз уж ты так заинтересовался, можешь поревьювить вот здесь https://bitbucket.org/k_bx/duplicates это моя первая программа, потому чем больше критики тем лучше.
к
splitOnFilesAndDirs → splitToFilesAndDirs всё-таки. "split on" — это делить чем-то, а не на что-то. "Split a string on a pattern match" etc
subFilesMapped ← mapM allPossibleFiles dirs
let subFiles = concat subFilesMapped
— неок кусок, я бы писал
subFiles ← mapM allPossibleFiles dirs >>= concat
или даже вообще без слов map и concat, монадой списка. Нет ghci под рукой, мб потом покажу.
> safeHead :: [a] → Maybe a
http://www.haskell.org/hoogle/?hoogle=[a... первый хит
> safeHead = Data.Maybe.listToMaybe
getGoodFullDirectoryContents :: FilePath → IO [FilePath]
getGoodFullDirectoryContents path = do
dirEntries ← getDirectoryContents path
let dirEntriesFiltered = filter (\x → x /= "." && x /= "..") dirEntries
let dirEntriesFull = map ((</>) path) dirEntriesFiltered
return dirEntriesFull
getGoodFullDirectoryContents dirPath = getDirectoryContents dirPath >>= return . dir
where dir entries = [dirPath (</>) entry | entry ← entries, entry /= "." && entry /= ".."]
потом ещё меня потыкай
ок, спасибо. что-то эти list comprehensions не нравятся мне совсем как-то, так что подумаю насчет их. а перед этим претензии вполне.
list comprehensions весьма читабельны же.
они мне ломают визуально остальной код (общую картину, так сказать) как-то. надо будет еще посравнивать, но в целом пока так.
эээм. Ты заметил, что 5 строчек превратились в 2?
еще не смотрел что там, но суть негодования не в количестве строчек а в пиздоватом оформлении list comprehensions, которые обычно сильно выбиваются из остального кода.