packages feed

monad-extras 0.2.0.0 → 0.3.0.0

raw patch · 2 files changed

+16/−1 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Control.Monad.Extra: discard :: Monad m => a -> m ()
+ Control.Monad.Extra: label :: ContT r m (ContT r m a)
+ Control.Monad.Extra: liftMaybe :: MonadPlus m => Maybe a -> m a

Files

Control/Monad/Extra.hs view
@@ -1,6 +1,7 @@ module Control.Monad.Extra where  import Control.Applicative+import Control.Monad import Control.Monad.Trans.Cont import Control.Monad.IO.Class @@ -8,6 +9,10 @@ skip :: Monad m => m () skip = return () +-- | Discards a value+discard :: Monad m => a -> m ()+discard _ = return ()+ -- | Synonym for @pure ()@. obvious :: Applicative f => f () obvious = pure ()@@ -47,6 +52,16 @@ doCallCC :: Monad m => ((r -> ContT r m b) -> ContT r m r) -> m r doCallCC = flip runContT return . callCC +-- | Return a continuation that one can jump back to within 'ContT'.+--+-- >>> flip runContT return $ do { k <- label; ...; k }+label :: ContT r m (ContT r m a)+label = callCC $ \k -> let m = k m in return m+ -- | Short-hand for @liftIO@. io :: MonadIO m => IO a -> m a io = liftIO++-- | Lift a 'Maybe' value into the 'MaybeT' monad transformer.+liftMaybe :: (MonadPlus m) => Maybe a -> m a+liftMaybe = maybe mzero return
monad-extras.cabal view
@@ -1,5 +1,5 @@ name:           monad-extras-version:        0.2.0.0+version:        0.3.0.0 synopsis:       Extra utility functions for working with monads -- description: homepage:       http://github.com/jwiegley/monad-extras