module UnliftIO.Streams.List ( chunkList , chunkListWith , fromList , toList ) where import Control.Monad.IO.Unlift (MonadUnliftIO, liftIO) import Prelude hiding (map) import System.IO.Streams (InputStream) import qualified System.IO.Streams.List as SL {-# INLINE chunkList #-} chunkList :: (MonadUnliftIO m) => Int -> InputStream a -> m (InputStream [a]) chunkList :: forall (m :: * -> *) a. MonadUnliftIO m => Int -> InputStream a -> m (InputStream [a]) chunkList Int n InputStream a is = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a. Int -> InputStream a -> IO (InputStream [a]) SL.chunkList Int n InputStream a is {-# INLINE chunkListWith #-} chunkListWith :: (MonadUnliftIO m) => (a -> Int -> Bool) -> InputStream a -> m (InputStream [a]) chunkListWith :: forall (m :: * -> *) a. MonadUnliftIO m => (a -> Int -> Bool) -> InputStream a -> m (InputStream [a]) chunkListWith a -> Int -> Bool p InputStream a is = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a. (a -> Int -> Bool) -> InputStream a -> IO (InputStream [a]) SL.chunkListWith a -> Int -> Bool p InputStream a is {-# INLINE toList #-} toList :: (MonadUnliftIO m) => InputStream a -> m [a] toList :: forall (m :: * -> *) a. MonadUnliftIO m => InputStream a -> m [a] toList = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. InputStream a -> IO [a] SL.toList {-# INLINE fromList #-} fromList :: (MonadUnliftIO m) => [a] -> m (InputStream a) fromList :: forall (m :: * -> *) a. MonadUnliftIO m => [a] -> m (InputStream a) fromList = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall c. [c] -> IO (InputStream c) SL.fromList