Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
- stop :: Monad m => Tube a () m r
- cat :: Monad m => Tube a a m r
- for :: Monad m => Tube a b m r -> (b -> Tube a c m s) -> Tube a c m r
- each :: (Monad m, Foldable t) => t b -> Tube () b m ()
- every :: (Foldable t, Monad m) => t b -> Tube () (Maybe b) m ()
- map :: Monad m => (a -> b) -> Tube a b m r
- drop :: Monad m => Int -> Tube a a m r
- take :: Monad m => Int -> Tube a a m ()
- takeWhile :: Monad m => (a -> Bool) -> Tube a a m ()
- filter :: Monad m => (a -> Bool) -> Tube a a m r
- unyield :: Monad m => Tube x b m () -> m (Maybe (b, Tube x b m ()))
- pass :: Monad m => a -> Tube a b m () -> m (Maybe (b, Tube a b m ()))
- mapM :: Monad m => (a -> m b) -> Tube a b m r
- sequence :: Monad m => Tube (m a) a m r
- lfold :: (x -> a -> x) -> (x -> (b, x)) -> x -> Pump b a Identity x
Documentation
stop :: Monad m => Tube a () m r Source
A default tube to end a series when no further processing is required.
map :: Monad m => (a -> b) -> Tube a b m r Source
Transforms all incoming values according to some function.
takeWhile :: Monad m => (a -> Bool) -> Tube a a m () Source
Terminates the stream upon receiving a value violating the predicate
filter :: Monad m => (a -> Bool) -> Tube a a m r Source
Yields only values satisfying some predicate.
unyield :: Monad m => Tube x b m () -> m (Maybe (b, Tube x b m ())) Source
Taps the next value from a source, maybe.
pass :: Monad m => a -> Tube a b m () -> m (Maybe (b, Tube a b m ())) Source
Similar to unyield
but it first sends a value through the tube.
mapM :: Monad m => (a -> m b) -> Tube a b m r Source
Similar to map
except it maps a monadic function instead of a pure one.
sequence :: Monad m => Tube (m a) a m r Source
Evaluates and extracts a pure value from a monadic one.
lfold :: (x -> a -> x) -> (x -> (b, x)) -> x -> Pump b a Identity x Source
Constructs a resumable left fold. Example usage:
summer :: Pump () Int Identity Int summer = lfold (+) (x -> ((),x)) 0 main :: IO () main = do result <- stream const (duplicate summer) $ each [1..10] putStrLn . show . extract $ result -- "55" result2 <- stream const (duplicate result) $ each [11..20] putStrLn . show . extract $ result2 -- "210"