|
Data.Vector.Fusion.Stream.Monadic | Portability | non-portable | Stability | experimental | Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
|
|
|
|
|
Description |
Monadic stream combinators.
|
|
Synopsis |
|
data Stream m a = forall s . Stream (s -> m (Step s a)) s Size | | | | size :: Stream m a -> Size | | sized :: Stream m a -> Size -> Stream m a | | length :: Monad m => Stream m a -> m Int | | null :: Monad m => Stream m a -> m Bool | | empty :: Monad m => Stream m a | | singleton :: Monad m => a -> Stream m a | | cons :: Monad m => a -> Stream m a -> Stream m a | | snoc :: Monad m => Stream m a -> a -> Stream m a | | replicate :: Monad m => Int -> a -> Stream m a | | replicateM :: Monad m => Int -> m a -> Stream m a | | generate :: Monad m => Int -> (Int -> a) -> Stream m a | | generateM :: Monad m => Int -> (Int -> m a) -> Stream m a | | (++) :: Monad m => Stream m a -> Stream m a -> Stream m a | | head :: Monad m => Stream m a -> m a | | last :: Monad m => Stream m a -> m a | | (!!) :: Monad m => Stream m a -> Int -> m a | | slice :: Monad m => Int -> Int -> Stream m a -> Stream m a | | init :: Monad m => Stream m a -> Stream m a | | tail :: Monad m => Stream m a -> Stream m a | | take :: Monad m => Int -> Stream m a -> Stream m a | | drop :: Monad m => Int -> Stream m a -> Stream m a | | map :: Monad m => (a -> b) -> Stream m a -> Stream m b | | mapM :: Monad m => (a -> m b) -> Stream m a -> Stream m b | | mapM_ :: Monad m => (a -> m b) -> Stream m a -> m () | | trans :: (Monad m, Monad m') => (forall a. m a -> m' a) -> Stream m a -> Stream m' a | | unbox :: Monad m => Stream m (Box a) -> Stream m a | | concatMap :: Monad m => (a -> Stream m b) -> Stream m a -> Stream m b | | flatten :: Monad m => (a -> m s) -> (s -> m (Step s b)) -> Size -> Stream m a -> Stream m b | | indexed :: Monad m => Stream m a -> Stream m (Int, a) | | indexedR :: Monad m => Int -> Stream m a -> Stream m (Int, a) | | zipWithM_ :: Monad m => (a -> b -> m c) -> Stream m a -> Stream m b -> m () | | zipWithM :: Monad m => (a -> b -> m c) -> Stream m a -> Stream m b -> Stream m c | | zipWith3M :: Monad m => (a -> b -> c -> m d) -> Stream m a -> Stream m b -> Stream m c -> Stream m d | | zipWith4M :: Monad m => (a -> b -> c -> d -> m e) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e | | zipWith5M :: Monad m => (a -> b -> c -> d -> e -> m f) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m f | | zipWith6M :: Monad m => (a -> b -> c -> d -> e -> f -> m g) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m f -> Stream m g | | zipWith :: Monad m => (a -> b -> c) -> Stream m a -> Stream m b -> Stream m c | | zipWith3 :: Monad m => (a -> b -> c -> d) -> Stream m a -> Stream m b -> Stream m c -> Stream m d | | zipWith4 :: Monad m => (a -> b -> c -> d -> e) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e | | zipWith5 :: Monad m => (a -> b -> c -> d -> e -> f) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m f | | zipWith6 :: Monad m => (a -> b -> c -> d -> e -> f -> g) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m f -> Stream m g | | zip :: Monad m => Stream m a -> Stream m b -> Stream m (a, b) | | zip3 :: Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m (a, b, c) | | zip4 :: Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m (a, b, c, d) | | zip5 :: Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m (a, b, c, d, e) | | zip6 :: Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e -> Stream m f -> Stream m (a, b, c, d, e, f) | | filter :: Monad m => (a -> Bool) -> Stream m a -> Stream m a | | filterM :: Monad m => (a -> m Bool) -> Stream m a -> Stream m a | | takeWhile :: Monad m => (a -> Bool) -> Stream m a -> Stream m a | | takeWhileM :: Monad m => (a -> m Bool) -> Stream m a -> Stream m a | | dropWhile :: Monad m => (a -> Bool) -> Stream m a -> Stream m a | | dropWhileM :: Monad m => (a -> m Bool) -> Stream m a -> Stream m a | | elem :: (Monad m, Eq a) => a -> Stream m a -> m Bool | | notElem :: (Monad m, Eq a) => a -> Stream m a -> m Bool | | find :: Monad m => (a -> Bool) -> Stream m a -> m (Maybe a) | | findM :: Monad m => (a -> m Bool) -> Stream m a -> m (Maybe a) | | findIndex :: Monad m => (a -> Bool) -> Stream m a -> m (Maybe Int) | | findIndexM :: Monad m => (a -> m Bool) -> Stream m a -> m (Maybe Int) | | foldl :: Monad m => (a -> b -> a) -> a -> Stream m b -> m a | | foldlM :: Monad m => (a -> b -> m a) -> a -> Stream m b -> m a | | foldl1 :: Monad m => (a -> a -> a) -> Stream m a -> m a | | foldl1M :: Monad m => (a -> a -> m a) -> Stream m a -> m a | | foldM :: Monad m => (a -> b -> m a) -> a -> Stream m b -> m a | | fold1M :: Monad m => (a -> a -> m a) -> Stream m a -> m a | | foldl' :: Monad m => (a -> b -> a) -> a -> Stream m b -> m a | | foldlM' :: Monad m => (a -> b -> m a) -> a -> Stream m b -> m a | | foldl1' :: Monad m => (a -> a -> a) -> Stream m a -> m a | | foldl1M' :: Monad m => (a -> a -> m a) -> Stream m a -> m a | | foldM' :: Monad m => (a -> b -> m a) -> a -> Stream m b -> m a | | fold1M' :: Monad m => (a -> a -> m a) -> Stream m a -> m a | | foldr :: Monad m => (a -> b -> b) -> b -> Stream m a -> m b | | foldrM :: Monad m => (a -> b -> m b) -> b -> Stream m a -> m b | | foldr1 :: Monad m => (a -> a -> a) -> Stream m a -> m a | | foldr1M :: Monad m => (a -> a -> m a) -> Stream m a -> m a | | and :: Monad m => Stream m Bool -> m Bool | | or :: Monad m => Stream m Bool -> m Bool | | concatMapM :: Monad m => (a -> m (Stream m b)) -> Stream m a -> Stream m b | | unfoldr :: Monad m => (s -> Maybe (a, s)) -> s -> Stream m a | | unfoldrM :: Monad m => (s -> m (Maybe (a, s))) -> s -> Stream m a | | unfoldrN :: Monad m => Int -> (s -> Maybe (a, s)) -> s -> Stream m a | | unfoldrNM :: Monad m => Int -> (s -> m (Maybe (a, s))) -> s -> Stream m a | | iterateN :: Monad m => Int -> (a -> a) -> a -> Stream m a | | iterateNM :: Monad m => Int -> (a -> m a) -> a -> Stream m a | | prescanl :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | prescanlM :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | prescanl' :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | prescanlM' :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | postscanl :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | postscanlM :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | postscanl' :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | postscanlM' :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | scanl :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | scanlM :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | scanl' :: Monad m => (a -> b -> a) -> a -> Stream m b -> Stream m a | | scanlM' :: Monad m => (a -> b -> m a) -> a -> Stream m b -> Stream m a | | scanl1 :: Monad m => (a -> a -> a) -> Stream m a -> Stream m a | | scanl1M :: Monad m => (a -> a -> m a) -> Stream m a -> Stream m a | | scanl1' :: Monad m => (a -> a -> a) -> Stream m a -> Stream m a | | scanl1M' :: Monad m => (a -> a -> m a) -> Stream m a -> Stream m a | | enumFromStepN :: (Num a, Monad m) => a -> a -> Int -> Stream m a | | enumFromTo :: (Enum a, Monad m) => a -> a -> Stream m a | | enumFromThenTo :: (Enum a, Monad m) => a -> a -> a -> Stream m a | | toList :: Monad m => Stream m a -> m [a] | | fromList :: Monad m => [a] -> Stream m a | | fromListN :: Monad m => Int -> [a] -> Stream m a | | unsafeFromList :: Monad m => Size -> [a] -> Stream m a |
|
|
Documentation |
|
|
Monadic streams
| Constructors | forall s . Stream (s -> m (Step s a)) s Size | |
| Instances | |
|
|
|
Result of taking a single step in a stream
| Constructors | Yield a s | a new element and a new seed
| Skip s | just a new seed
| Done | end of stream
|
|
|
|
Size hints
|
|
|
Size hint of a Stream
|
|
|
Attach a Size hint to a Stream
|
|
Length
|
|
|
Length of a Stream
|
|
|
Check if a Stream is empty
|
|
Construction
|
|
|
Empty Stream
|
|
|
Singleton Stream
|
|
|
Prepend an element
|
|
|
Append an element
|
|
|
Replicate a value to a given length
|
|
|
Yield a Stream of values obtained by performing the monadic action the
given number of times
|
|
|
|
|
Generate a stream from its indices
|
|
|
Concatenate two Streams
|
|
Accessing elements
|
|
|
First element of the Stream or error if empty
|
|
|
Last element of the Stream or error if empty
|
|
|
Element at the given position
|
|
Substreams
|
|
|
:: Monad m | | => Int | starting index
| -> Int | length
| -> Stream m a | | -> Stream m a | | Extract a substream of the given length starting at the given position.
|
|
|
|
All but the last element
|
|
|
All but the first element
|
|
|
The first n elements
|
|
|
All but the first n elements
|
|
Mapping
|
|
|
Map a function over a Stream
|
|
|
Map a monadic function over a Stream
|
|
|
Execute a monadic action for each element of the Stream
|
|
|
Transform a Stream to use a different monad
|
|
|
|
|
|
|
Create a Stream of values from a Stream of streamable things
|
|
Zipping
|
|
|
Pair each element in a Stream with its index
|
|
|
Pair each element in a Stream with its index, starting from the right
and counting down
|
|
|
|
|
Zip two Streams with the given monadic function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Filtering
|
|
|
Drop elements which do not satisfy the predicate
|
|
|
Drop elements which do not satisfy the monadic predicate
|
|
|
Longest prefix of elements that satisfy the predicate
|
|
|
Longest prefix of elements that satisfy the monadic predicate
|
|
|
Drop the longest prefix of elements that satisfy the predicate
|
|
|
Drop the longest prefix of elements that satisfy the monadic predicate
|
|
Searching
|
|
|
Check whether the Stream contains an element
|
|
|
Inverse of elem
|
|
|
Yield Just the first element that satisfies the predicate or Nothing
if no such element exists.
|
|
|
Yield Just the first element that satisfies the monadic predicate or
Nothing if no such element exists.
|
|
|
Yield Just the index of the first element that satisfies the predicate
or Nothing if no such element exists.
|
|
|
Yield Just the index of the first element that satisfies the monadic
predicate or Nothing if no such element exists.
|
|
Folding
|
|
|
Left fold
|
|
|
Left fold with a monadic operator
|
|
|
Left fold over a non-empty Stream
|
|
|
Left fold over a non-empty Stream with a monadic operator
|
|
|
Same as foldlM
|
|
|
Same as foldl1M
|
|
|
Left fold with a strict accumulator
|
|
|
Left fold with a strict accumulator and a monadic operator
|
|
|
Left fold over a non-empty Stream with a strict accumulator
|
|
|
Left fold over a non-empty Stream with a strict accumulator and a
monadic operator
|
|
|
Same as foldlM'
|
|
|
Same as foldl1M'
|
|
|
Right fold
|
|
|
Right fold with a monadic operator
|
|
|
Right fold over a non-empty stream
|
|
|
Right fold over a non-empty stream with a monadic operator
|
|
Specialised folds
|
|
|
|
|
|
|
|
Unfolding
|
|
|
Unfold
|
|
|
Unfold with a monadic function
|
|
|
Unfold at most n elements
|
|
|
Unfold at most n elements with a monadic functions
|
|
|
Apply function n times to value. Zeroth element is original value.
|
|
|
Apply monadic function n times to value. Zeroth element is original value.
|
|
Scans
|
|
|
Prefix scan
|
|
|
Prefix scan with a monadic operator
|
|
|
Prefix scan with strict accumulator
|
|
|
Prefix scan with strict accumulator and a monadic operator
|
|
|
Suffix scan
|
|
|
Suffix scan with a monadic operator
|
|
|
Suffix scan with strict accumulator
|
|
|
Suffix scan with strict acccumulator and a monadic operator
|
|
|
Haskell-style scan
|
|
|
Haskell-style scan with a monadic operator
|
|
|
Haskell-style scan with strict accumulator
|
|
|
Haskell-style scan with strict accumulator and a monadic operator
|
|
|
Scan over a non-empty Stream
|
|
|
Scan over a non-empty Stream with a monadic operator
|
|
|
Scan over a non-empty Stream with a strict accumulator
|
|
|
Scan over a non-empty Stream with a strict accumulator and a monadic
operator
|
|
Enumerations
|
|
|
Yield a Stream of the given length containing the values x, x+y,
x+y+y etc.
|
|
|
Enumerate values
WARNING: This operation can be very inefficient. If at all possible, use
enumFromStepN instead.
|
|
|
Enumerate values with a given step.
WARNING: This operation is very inefficient. If at all possible, use
enumFromStepN instead.
|
|
Conversions
|
|
|
Convert a Stream to a list
|
|
|
Convert a list to a Stream
|
|
|
Convert the first n elements of a list to a Stream
|
|
|
Convert a list to a Stream with the given Size hint.
|
|
Produced by Haddock version 2.6.1 |