vector-0.13.1.0: Efficient Arrays
Copyright(c) Roman Leshchinskiy 2008-2010
Alexey Kuleshevich 2020-2022
Aleksey Khudyakov 2020-2022
Andrew Lelechenko 2020-2022
LicenseBSD-style
MaintainerHaskell Libraries Team <libraries@haskell.org>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Vector.Fusion.Stream.Monadic

Description

Monadic stream combinators.

Documentation

(++) :: forall (m :: Type -> Type) a. Monad m => Stream m a -> Stream m a -> Stream m a #

data Box a #

Constructors

Box 

Fields

Instances

Instances details
Applicative Box 
Instance details

Defined in Data.Stream.Monadic

Methods

pure :: a -> Box a

(<*>) :: Box (a -> b) -> Box a -> Box b

liftA2 :: (a -> b -> c) -> Box a -> Box b -> Box c

(*>) :: Box a -> Box b -> Box b

(<*) :: Box a -> Box b -> Box a

Functor Box 
Instance details

Defined in Data.Stream.Monadic

Methods

fmap :: (a -> b) -> Box a -> Box b

(<$) :: a -> Box b -> Box a

Monad Box 
Instance details

Defined in Data.Stream.Monadic

Methods

(>>=) :: Box a -> (a -> Box b) -> Box b

(>>) :: Box a -> Box b -> Box b

return :: a -> Box a

liftBox :: Monad m => Box a -> m a #

length :: Monad m => Stream m a -> m Int #

null :: Monad m => Stream m a -> m Bool #

empty :: forall (m :: Type -> Type) a. Monad m => Stream m a #

singleton :: forall (m :: Type -> Type) a. Monad m => a -> Stream m a #

cons :: forall (m :: Type -> Type) a. Monad m => a -> Stream m a -> Stream m a #

snoc :: forall (m :: Type -> Type) a. Monad m => Stream m a -> a -> Stream m a #

replicate :: forall (m :: Type -> Type) a. Monad m => Int -> a -> Stream m a #

replicateM :: Monad m => Int -> m a -> Stream m a #

generate :: forall (m :: Type -> Type) a. Monad m => Int -> (Int -> a) -> Stream m a #

generateM :: Monad m => Int -> (Int -> m a) -> Stream m a #

head :: (HasCallStack, Monad m) => Stream m a -> m a #

last :: (HasCallStack, Monad m) => Stream m a -> m a #

(!!) :: (HasCallStack, Monad m) => Stream m a -> Int -> m a #

(!?) :: Monad m => Stream m a -> Int -> m (Maybe a) #

slice :: forall (m :: Type -> Type) a. Monad m => Int -> Int -> Stream m a -> Stream m a #

init :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Stream m a -> Stream m a #

tail :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Stream m a -> Stream m a #

take :: forall (m :: Type -> Type) a. Monad m => Int -> Stream m a -> Stream m a #

drop :: forall (m :: Type -> Type) a. Monad m => Int -> Stream m a -> Stream m a #

map :: forall (m :: Type -> Type) a b. 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 z. m z -> m' z) -> Stream m a -> Stream m' a #

unbox :: forall (m :: Type -> Type) a. Monad m => Stream m (Box a) -> Stream m a #

concatMap :: forall (m :: Type -> Type) a b. Monad m => (a -> Stream m b) -> Stream m a -> Stream m b #

flatten :: Monad m => (a -> m s) -> (s -> m (Step s b)) -> Stream m a -> Stream m b #

indexed :: forall (m :: Type -> Type) a. Monad m => Stream m a -> Stream m (Int, a) #

indexedR :: forall (m :: Type -> Type) a. 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 :: forall (m :: Type -> Type) a b c. Monad m => (a -> b -> c) -> Stream m a -> Stream m b -> Stream m c #

zipWith3 :: forall (m :: Type -> Type) a b c d. Monad m => (a -> b -> c -> d) -> Stream m a -> Stream m b -> Stream m c -> Stream m d #

zipWith4 :: forall (m :: Type -> Type) a b c d e. Monad m => (a -> b -> c -> d -> e) -> Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m e #

zipWith5 :: forall (m :: Type -> Type) a b c d e f. 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 :: forall (m :: Type -> Type) a b c d e f g. 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 :: forall (m :: Type -> Type) a b. Monad m => Stream m a -> Stream m b -> Stream m (a, b) #

zip3 :: forall (m :: Type -> Type) a b c. Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m (a, b, c) #

zip4 :: forall (m :: Type -> Type) a b c d. Monad m => Stream m a -> Stream m b -> Stream m c -> Stream m d -> Stream m (a, b, c, d) #

zip5 :: forall (m :: Type -> Type) a b c d e. 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 :: forall (m :: Type -> Type) a b c d e f. 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) #

eqBy :: Monad m => (a -> b -> Bool) -> Stream m a -> Stream m b -> m Bool #

cmpBy :: Monad m => (a -> b -> Ordering) -> Stream m a -> Stream m b -> m Ordering #

filter :: forall (m :: Type -> Type) a. Monad m => (a -> Bool) -> Stream m a -> Stream m a #

filterM :: Monad m => (a -> m Bool) -> Stream m a -> Stream m a #

mapMaybeM :: Monad m => (a -> m (Maybe b)) -> Stream m a -> Stream m b #

takeWhile :: forall (m :: Type -> Type) a. Monad m => (a -> Bool) -> Stream m a -> Stream m a #

takeWhileM :: Monad m => (a -> m Bool) -> Stream m a -> Stream m a #

dropWhile :: forall (m :: Type -> Type) a. 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 :: (HasCallStack, 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' :: (HasCallStack, 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 :: (HasCallStack, 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 :: forall (m :: Type -> Type) s a. Monad m => (s -> Maybe (a, s)) -> s -> Stream m a #

unfoldrM :: Monad m => (s -> m (Maybe (a, s))) -> s -> Stream m a #

unfoldrN :: forall (m :: Type -> Type) s a. Monad m => Int -> (s -> Maybe (a, s)) -> s -> Stream m a #

unfoldrNM :: Monad m => Int -> (s -> m (Maybe (a, s))) -> s -> Stream m a #

unfoldrExactN :: forall (m :: Type -> Type) s a. Monad m => Int -> (s -> (a, s)) -> s -> Stream m a #

unfoldrExactNM :: Monad m => Int -> (s -> m (a, s)) -> s -> Stream m a #

iterateN :: forall (m :: Type -> Type) a. Monad m => Int -> (a -> a) -> a -> Stream m a #

iterateNM :: Monad m => Int -> (a -> m a) -> a -> Stream m a #

prescanl :: forall (m :: Type -> Type) a b. 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' :: forall (m :: Type -> Type) a b. 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 :: forall (m :: Type -> Type) a b. 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' :: forall (m :: Type -> Type) a b. 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 :: forall (m :: Type -> Type) a b. 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' :: forall (m :: Type -> Type) a b. 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 :: forall (m :: Type -> Type) a. 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' :: forall (m :: Type -> Type) a. 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 :: forall a (m :: Type -> Type). (Num a, Monad m) => a -> a -> Int -> Stream m a #

enumFromTo :: forall a (m :: Type -> Type). (Enum a, Monad m) => a -> a -> Stream m a #

enumFromThenTo :: forall a (m :: Type -> Type). (Enum a, Monad m) => a -> a -> a -> Stream m a #

toList :: Monad m => Stream m a -> m [a] #

fromList :: forall (m :: Type -> Type) a. Monad m => [a] -> Stream m a #

fromListN :: forall (m :: Type -> Type) a. Monad m => Int -> [a] -> Stream m a #

data Stream (m :: Type -> Type) a #

Constructors

Stream (s -> m (Step s a)) s 

Instances

Instances details
Monad m => Functor (Stream m) 
Instance details

Defined in Data.Stream.Monadic

Methods

fmap :: (a -> b) -> Stream m a -> Stream m b

(<$) :: a -> Stream m b -> Stream m a

data Step s a where #

Constructors

Yield :: forall a s. a -> s -> Step s a 
Skip :: forall s a. s -> Step s a 
Done :: forall s a. Step s a 

Instances

Instances details
Functor (Step s) 
Instance details

Defined in Data.Stream.Monadic

Methods

fmap :: (a -> b) -> Step s a -> Step s b

(<$) :: a -> Step s b -> Step s a

uniq :: forall a (m :: Type -> Type). (Eq a, Monad m) => Stream m a -> Stream m a #

mapMaybe :: forall (m :: Type -> Type) a b. Monad m => (a -> Maybe b) -> Stream m a -> Stream m b #

catMaybes :: forall (m :: Type -> Type) a. Monad m => Stream m (Maybe a) -> Stream m a #

data SPEC #

Constructors

SPEC 
SPEC2