Portability | non-portable |
---|---|

Stability | experimental |

Maintainer | rl@cse.unsw.edu.au |

Fusible streams

- data Step s a
- data Stream a = forall s . Stream (s -> Step s a) s Size
- size :: Stream a -> Size
- sized :: Stream a -> Size -> Stream a
- length :: Stream a -> Int
- null :: Stream a -> Bool
- empty :: Stream a
- singleton :: a -> Stream a
- cons :: a -> Stream a -> Stream a
- snoc :: Stream a -> a -> Stream a
- replicate :: Int -> a -> Stream a
- (++) :: Stream a -> Stream a -> Stream a
- head :: Stream a -> a
- last :: Stream a -> a
- (!!) :: Stream a -> Int -> a
- extract :: Stream a -> Int -> Int -> Stream a
- init :: Stream a -> Stream a
- tail :: Stream a -> Stream a
- take :: Int -> Stream a -> Stream a
- drop :: Int -> Stream a -> Stream a
- map :: (a -> b) -> Stream a -> Stream b
- zipWith :: (a -> b -> c) -> Stream a -> Stream b -> Stream c
- filter :: (a -> Bool) -> Stream a -> Stream a
- takeWhile :: (a -> Bool) -> Stream a -> Stream a
- dropWhile :: (a -> Bool) -> Stream a -> Stream a
- elem :: Eq a => a -> Stream a -> Bool
- notElem :: Eq a => a -> Stream a -> Bool
- find :: (a -> Bool) -> Stream a -> Maybe a
- findIndex :: (a -> Bool) -> Stream a -> Maybe Int
- foldl :: (a -> b -> a) -> a -> Stream b -> a
- foldl1 :: (a -> a -> a) -> Stream a -> a
- foldl' :: (a -> b -> a) -> a -> Stream b -> a
- foldl1' :: (a -> a -> a) -> Stream a -> a
- foldr :: (a -> b -> b) -> b -> Stream a -> b
- foldr1 :: (a -> a -> a) -> Stream a -> a
- unfold :: (s -> Maybe (a, s)) -> s -> Stream a
- toList :: Stream a -> [a]
- fromList :: [a] -> Stream a
- mapM_ :: Monad m => (a -> m ()) -> Stream a -> m ()
- foldM :: Monad m => (a -> b -> m a) -> a -> Stream b -> m a

# Types

The type of fusible streams

# Size hints

# Length information

# Construction

# Accessing individual elements

# Substreams

Extract a substream of the given length starting at the given position.

# Mapping and zipping

zipWith :: (a -> b -> c) -> Stream a -> Stream b -> Stream cSource

Zip two `Stream`

s with the given function

# Filtering

takeWhile :: (a -> Bool) -> Stream a -> Stream aSource

Longest prefix of elements that satisfy the predicate

dropWhile :: (a -> Bool) -> Stream a -> Stream aSource

Drop the longest prefix of elements that satisfy the predicate

# Searching

# Folding

foldl1' :: (a -> a -> a) -> Stream a -> aSource

Left fold on non-empty `Stream`

s with strict accumulator