1

従来の方法で、ディレクトリを再帰的に調べています。これは実用的なプロトタイプです:

traverseFlatDst :: FilePath -> Int -> Int -> FilePath -> IO ()
traverseFlatDst dstRoot total totw srcDir = do
  (dirs, files) <- listDir srcDir
  mapM_ (\file -> putStrLn (printf "%s" (strp file))) files    -- tracing
  let traverse = traverseFlatDst dstRoot total totw
  mapM_ traverse dirs

あまり珍しいことではありませんが、すべてのトレース行に番号を付ける必要があります (実際にはトレース用ではありません)。このような:

traverseFlatDst :: FilePath -> Int -> Int -> FilePath -> IO ()
traverseFlatDst dstRoot total totw srcDir = do
  (dirs, files) <- listDir srcDir
  mapM_ (\file -> putStrLn (printf "%d: %s" counterFromNowhere (strp file))) files
  let traverse = traverseFlatDst dstRoot total totw
  mapM_ traverse dirs

私がこれまで見てきたすべての解決策は、たとえ該当するとしても、想像を絶するほど醜いものです。それを管理する良い方法はありますか?

4

5 に答える 5