kb 22.01.2013 06:39 04a3831c

Легко понять, когда тебе пора выносить "чистый" код куда-нибудь http://screencloud.net/v/6wVj

1. ulidtko 22.01.2013 11:40

с первой же строчки вопрос: зачем у canonicalizePath не «чистый» тип результата? разве функция «путь» → «каноничный путь» — не функция?

2. kbulidtko /1 22.01.2013 11:43 04a3831c

ну, он, по идее, умеет там всякие символические ссылки и прочее резолвить. короче на почитай http://hackage.haskell.org/packages/arch...

3. kbkb /2 22.01.2013 11:43 04a3831c

у меня хакедж не работает сегодня что-то

4. kbulidtko /1 22.01.2013 11:49 04a3831c

в основном для превращения относительных путей в абсолютные, короче говоря

5. kbulidtko /1 22.01.2013 11:50 04a3831c

вообще, раз уж ты так заинтересовался, можешь поревьювить вот здесь https://bitbucket.org/k_bx/duplicates это моя первая программа, потому чем больше критики тем лучше.

6. ulidtkokb /5 22.01.2013 12:44

к

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 /= ".."]

потом ещё меня потыкай

7. kbulidtko /6 22.01.2013 12:48

ок, спасибо. что-то эти list comprehensions не нравятся мне совсем как-то, так что подумаю насчет их. а перед этим претензии вполне.

8. ulidtkokb /7 22.01.2013 13:11

list comprehensions весьма читабельны же.

9. kbulidtko /8 22.01.2013 13:12 04a3831c

они мне ломают визуально остальной код (общую картину, так сказать) как-то. надо будет еще посравнивать, но в целом пока так.

10. ulidtkokb /9 22.01.2013 13:46

эээм. Ты заметил, что 5 строчек превратились в 2?

11. kbulidtko /10 22.01.2013 13:47 04a3831c

еще не смотрел что там, но суть негодования не в количестве строчек а в пиздоватом оформлении list comprehensions, которые обычно сильно выбиваются из остального кода.

Do you really want to delete ?