|
| 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 | | | 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 | | | 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 | |
|
|
|
|
| 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 | length
| | -> Int | | | -> 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
|
|
|
|
|
|
| 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
|
|
| 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.0 |