Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Utility functions for Kleisli arrows
- foreverK :: Monad m => (a -> m a) -> a -> m b
- replicateK :: Monad m => Int -> (a -> m a) -> a -> m a
- mapK :: (Monad m, MonadTrans t) => (a -> m b) -> a -> t m b
Core utility functions
Use foreverK
to abstract away the following common pattern:
p a = do ... a' <- respond b p a'
Using foreverK
, you can avoid the manual recursion:
p = foreverK $ \a -> do ... respond b
replicateK :: Monad m => Int -> (a -> m a) -> a -> m a Source #
Repeat a 'K
'leisli arrow multiple times
mapK :: (Monad m, MonadTrans t) => (a -> m b) -> a -> t m b Source #
Convenience function equivalent to (lift .)
mapK f >=> mapK g = mapK (f >=> g) mapK return = return