Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype UnfoldM m input = UnfoldM (forall output. (output -> input -> m output) -> output -> m output)
- null :: Monad m => UnfoldM m input -> m Bool
- foldlM' :: Monad m => (output -> input -> m output) -> output -> UnfoldM m input -> m output
- mapM_ :: Monad m => (input -> m ()) -> UnfoldM m input -> m ()
- forM_ :: Monad m => UnfoldM m input -> (input -> m ()) -> m ()
- fold :: Fold input output -> UnfoldM Identity input -> output
- foldM :: Monad m => FoldM m input output -> UnfoldM m input -> m output
- mapFoldMInput :: Monad m => (forall x. FoldM m b x -> FoldM m a x) -> UnfoldM m a -> UnfoldM m b
- foldable :: (Monad m, Foldable foldable) => foldable a -> UnfoldM m a
- foldlRunner :: Monad m => (forall x. (x -> a -> x) -> x -> x) -> UnfoldM m a
- foldrRunner :: Monad m => (forall x. (a -> x -> x) -> x -> x) -> UnfoldM m a
- filter :: Monad m => (a -> m Bool) -> UnfoldM m a -> UnfoldM m a
- intsInRange :: Monad m => Int -> Int -> UnfoldM m Int
- tVarValue :: TVar a -> UnfoldM STM a
- hoist :: (forall a. m a -> n a) -> (forall a. n a -> m a) -> UnfoldM m a -> UnfoldM n a
- byteStringBytes :: ByteString -> UnfoldM IO Word8
- shortByteStringBytes :: Monad m => ShortByteString -> UnfoldM m Word8
- primArray :: (Monad m, Prim prim) => PrimArray prim -> UnfoldM m prim
Documentation
newtype UnfoldM m input Source #
A monadic variation of DeferredFolds.Unfold
UnfoldM (forall output. (output -> input -> m output) -> output -> m output) |
Instances
foldlM' :: Monad m => (output -> input -> m output) -> output -> UnfoldM m input -> m output Source #
Perform a monadic strict left fold
mapM_ :: Monad m => (input -> m ()) -> UnfoldM m input -> m () Source #
A more efficient implementation of mapM_
forM_ :: Monad m => UnfoldM m input -> (input -> m ()) -> m () Source #
Same as mapM_
with arguments flipped
foldM :: Monad m => FoldM m input output -> UnfoldM m input -> m output Source #
Apply a monadic Gonzalez fold
mapFoldMInput :: Monad m => (forall x. FoldM m b x -> FoldM m a x) -> UnfoldM m a -> UnfoldM m b Source #
Lift a fold input mapping function into a mapping of unfolds
foldable :: (Monad m, Foldable foldable) => foldable a -> UnfoldM m a Source #
Construct from any foldable
foldlRunner :: Monad m => (forall x. (x -> a -> x) -> x -> x) -> UnfoldM m a Source #
Construct from a specification of how to execute a left-fold
foldrRunner :: Monad m => (forall x. (a -> x -> x) -> x -> x) -> UnfoldM m a Source #
Construct from a specification of how to execute a right-fold
filter :: Monad m => (a -> m Bool) -> UnfoldM m a -> UnfoldM m a Source #
Filter the values given a predicate
hoist :: (forall a. m a -> n a) -> (forall a. n a -> m a) -> UnfoldM m a -> UnfoldM n a Source #
Change the base monad using invariant natural transformations
byteStringBytes :: ByteString -> UnfoldM IO Word8 Source #
shortByteStringBytes :: Monad m => ShortByteString -> UnfoldM m Word8 Source #