simple-pipe-0.0.0.2: src/Data/Pipe/List.hs
module Data.Pipe.List (
fromList,
toList,
) where
import Control.Monad
import Data.Pipe
fromList :: (Monad m, Monad (p () a m), PipeClass p) => [a] -> p () a m ()
fromList [] = return ()
fromList (x : xs) = yield x >> fromList xs
-- | Consume all values from the stream and return as a list.
-- This will pull all values into memory.
toList :: (Monad m, Monad (p a () m), PipeClass p) => p a () m [a]
toList = do
mx <- await
case mx of
Just x -> (x :) `liftM` toList
_ -> return []