streamly-0.1.0: src/Streamly/Examples/ListDirRecursive.hs
{-# LANGUAGE FlexibleContexts #-}
module Streamly.Examples.ListDirRecursive where
import Path.IO (listDir, getCurrentDir)
import System.IO (stdout, hSetBuffering, BufferMode(LineBuffering))
import Streamly
listDirRecursive :: IO ()
listDirRecursive = do
liftIO $ hSetBuffering stdout LineBuffering
runStreamT $ getCurrentDir >>= readdir
where readdir d = do
(ds, fs) <- lift $ listDir d
liftIO $ mapM_ putStrLn $ map show fs ++ map show ds
--foldWith (<>) $ map readdir ds -- serial
--foldWith (<=>) $ map readdir ds -- serial interleaved
foldWith (<|) $ map readdir ds -- concurrent left biased
--foldWith (<|>) $ map readdir ds -- concurrent interleaved