{-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -Wno-deprecations #-} module Main (main) where import System.IO (stdout, hSetBuffering, BufferMode(LineBuffering)) import qualified Streamly.Data.Fold as Fold import qualified Streamly.Data.Stream.Prelude as Stream -- import qualified Streamly.Internal.Data.Stream as Stream -- import qualified Streamly.Internal.Data.Unfold as Unfold (either, nil) import qualified Streamly.Internal.FileSystem.Dir as Dir -- | List the current directory recursively using concurrent processing main :: IO () main = do hSetBuffering stdout LineBuffering Stream.fold (Fold.drainMapM print) -- $ Stream.unfoldIterateDfs unfoldOne -- $ Stream.unfoldIterateBfs unfoldOne -- $ Stream.unfoldIterateBfsRev unfoldOne -- $ Stream.concatIterateDfs streamOneMaybe -- $ Stream.concatIterateBfs streamOneMaybe -- $ Stream.concatIterateBfsRev streamOneMaybe -- $ Stream.concatIterateWith Stream.append streamOne -- $ Stream.mergeIterateWith Stream.interleave streamOne $ Stream.parConcatIterate id streamOne -- $ Stream.parConcatIterate (Stream.interleaved True) streamOne -- $ Stream.parConcatIterate (Stream.ordered True) streamOne $ Stream.fromPure (Left ".") where -- unfoldOne = Unfold.either Dir.eitherReaderPaths Unfold.nil -- streamOneMaybe = either (Just . Dir.readEitherPaths) (const Nothing) streamOne = either Dir.readEitherPaths (const Stream.nil)