deferred-folds-0.9: Abstractions over deferred folds

Safe HaskellNone
LanguageHaskell2010

DeferredFolds.UnfoldlM

Synopsis

Documentation

newtype UnfoldlM m a Source #

A monadic variation of DeferredFolds.Unfoldl

Constructors

UnfoldlM (forall x. (x -> a -> m x) -> x -> m x) 
Instances
MonadTrans UnfoldlM # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

lift :: Monad m => m a -> UnfoldlM m a #

Monad m => Monad (UnfoldlM m) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

(>>=) :: UnfoldlM m a -> (a -> UnfoldlM m b) -> UnfoldlM m b #

(>>) :: UnfoldlM m a -> UnfoldlM m b -> UnfoldlM m b #

return :: a -> UnfoldlM m a #

fail :: String -> UnfoldlM m a #

Functor m => Functor (UnfoldlM m) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

fmap :: (a -> b) -> UnfoldlM m a -> UnfoldlM m b #

(<$) :: a -> UnfoldlM m b -> UnfoldlM m a #

Monad m => Applicative (UnfoldlM m) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

pure :: a -> UnfoldlM m a #

(<*>) :: UnfoldlM m (a -> b) -> UnfoldlM m a -> UnfoldlM m b #

liftA2 :: (a -> b -> c) -> UnfoldlM m a -> UnfoldlM m b -> UnfoldlM m c #

(*>) :: UnfoldlM m a -> UnfoldlM m b -> UnfoldlM m b #

(<*) :: UnfoldlM m a -> UnfoldlM m b -> UnfoldlM m a #

Foldable (UnfoldlM Identity) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

fold :: Monoid m => UnfoldlM Identity m -> m #

foldMap :: Monoid m => (a -> m) -> UnfoldlM Identity a -> m #

foldr :: (a -> b -> b) -> b -> UnfoldlM Identity a -> b #

foldr' :: (a -> b -> b) -> b -> UnfoldlM Identity a -> b #

foldl :: (b -> a -> b) -> b -> UnfoldlM Identity a -> b #

foldl' :: (b -> a -> b) -> b -> UnfoldlM Identity a -> b #

foldr1 :: (a -> a -> a) -> UnfoldlM Identity a -> a #

foldl1 :: (a -> a -> a) -> UnfoldlM Identity a -> a #

toList :: UnfoldlM Identity a -> [a] #

null :: UnfoldlM Identity a -> Bool #

length :: UnfoldlM Identity a -> Int #

elem :: Eq a => a -> UnfoldlM Identity a -> Bool #

maximum :: Ord a => UnfoldlM Identity a -> a #

minimum :: Ord a => UnfoldlM Identity a -> a #

sum :: Num a => UnfoldlM Identity a -> a #

product :: Num a => UnfoldlM Identity a -> a #

Monad m => Alternative (UnfoldlM m) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

empty :: UnfoldlM m a #

(<|>) :: UnfoldlM m a -> UnfoldlM m a -> UnfoldlM m a #

some :: UnfoldlM m a -> UnfoldlM m [a] #

many :: UnfoldlM m a -> UnfoldlM m [a] #

Monad m => MonadPlus (UnfoldlM m) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

mzero :: UnfoldlM m a #

mplus :: UnfoldlM m a -> UnfoldlM m a -> UnfoldlM m a #

Eq a => Eq (UnfoldlM Identity a) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Show a => Show (UnfoldlM Identity a) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Monad m => Semigroup (UnfoldlM m a) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

(<>) :: UnfoldlM m a -> UnfoldlM m a -> UnfoldlM m a #

sconcat :: NonEmpty (UnfoldlM m a) -> UnfoldlM m a #

stimes :: Integral b => b -> UnfoldlM m a -> UnfoldlM m a #

Monad m => Monoid (UnfoldlM m a) # 
Instance details

Defined in DeferredFolds.Defs.UnfoldlM

Methods

mempty :: UnfoldlM m a #

mappend :: UnfoldlM m a -> UnfoldlM m a -> UnfoldlM m a #

mconcat :: [UnfoldlM m a] -> UnfoldlM m a #

null :: Monad m => UnfoldlM m input -> m Bool Source #

Check whether it's empty

foldlM' :: Monad m => (output -> input -> m output) -> output -> UnfoldlM m input -> m output Source #

Perform a monadic strict left fold

mapM_ :: Monad m => (input -> m ()) -> UnfoldlM m input -> m () Source #

A more efficient implementation of mapM_

forM_ :: Monad m => UnfoldlM m input -> (input -> m ()) -> m () Source #

Same as mapM_ with arguments flipped

fold :: Fold input output -> UnfoldlM Identity input -> output Source #

Apply a Gonzalez fold

foldM :: Monad m => FoldM m input output -> UnfoldlM m input -> m output Source #

Apply a monadic Gonzalez fold

mapFoldMInput :: Monad m => (forall x. FoldM m b x -> FoldM m a x) -> UnfoldlM m a -> UnfoldlM m b Source #

Lift a fold input mapping function into a mapping of unfolds

foldable :: (Monad m, Foldable foldable) => foldable a -> UnfoldlM m a Source #

Construct from any foldable

foldlRunner :: Monad m => (forall x. (x -> a -> x) -> x -> x) -> UnfoldlM m a Source #

Construct from a specification of how to execute a left-fold

foldrRunner :: Monad m => (forall x. (a -> x -> x) -> x -> x) -> UnfoldlM m a Source #

Construct from a specification of how to execute a right-fold

filter :: Monad m => (a -> m Bool) -> UnfoldlM m a -> UnfoldlM m a Source #

Filter the values given a predicate

intsInRange :: Monad m => Int -> Int -> UnfoldlM m Int Source #

Ints in the specified inclusive range

tVarValue :: TVar a -> UnfoldlM STM a Source #

TVar contents

hoist :: (forall a. m a -> n a) -> (forall a. n a -> m a) -> UnfoldlM m a -> UnfoldlM n a Source #

Change the base monad using invariant natural transformations

byteStringBytes :: ByteString -> UnfoldlM IO Word8 Source #

Bytes of a bytestring

shortByteStringBytes :: Monad m => ShortByteString -> UnfoldlM m Word8 Source #

Bytes of a short bytestring

primArray :: (Monad m, Prim prim) => PrimArray prim -> UnfoldlM m prim Source #

Elements of a prim array

primArrayWithIndices :: (Monad m, Prim prim) => PrimArray prim -> UnfoldlM m (Int, prim) Source #

Elements of a prim array coming paired with indices