2016-12-31 7 views
1

System.Directoryパッケージなどの特定のメソッドを使用して、指定されたパスを持つすべてのネストされたディレクトリのリストを取得できるかどうかは不思議です。Haskellのネストされたディレクトリのリスト

getDirList :: FilePath -> IO [FilePath] 
getDirList dir = do 
    contents <- getDirectoryContents dir 
    all <- mapM (return . (dir </>)) $ filter (\f -> f /= "." && f /= "..") contents 
    dirs <- filterM doesDirectoryExist all 
    dirs' <- mapM getDirList dirs 
    return (dir : concat dirs') 

は、私は本当に簡単な何かが欠けてきたことがある:私はこのような何かを思い付いたので、私は、任意の適切な機能を見つけることができますか?誰でもお勧めできますか?ありがとうございました。

+0

を[昨日から多分関連](http://stackoverflow.com/questions/41404647/how-to-implement-search-in-file-systemイン・ハスケル)。 – Alec

+1

答えはありませんが、 'getDirectoryContents'の代わりに' listDirectory'を使用すると、自動的に '.'と' ..'特殊ディレクトリを除外できます。 –

+0

はい、私はlistDirectoryに気付きました。実際には、この関数からフィルタリングを行いました。 :) 明けましておめでとうございます。 – BarbedWire

答えて

1

それはfilemanipパッケージを使用しても大丈夫だ場合:

import System.FilePath.Find 

getDirList dir = find always (fileType ==? Directory) dir 
関連する問題