packages feed

control 0.1.0.0 → 0.1.1.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.Base.Control: control :: MonadBaseControl m => (RunInBase m -> Base m (StM m a)) -> m a
+ Control.Monad.Base.Control: liftBaseDiscard :: MonadBaseControl m => (Base m () -> Base m a) -> m () -> m a
+ Control.Monad.Base.Control: liftBaseOp :: MonadBaseControl m => ((a -> Base m (StM m b)) -> Base m (StM m c)) -> (a -> m b) -> m c
+ Control.Monad.Base.Control: liftBaseOpDiscard :: MonadBaseControl m => ((a -> Base m ()) -> Base m b) -> (a -> m ()) -> m b
+ Control.Monad.Base.Control: liftBaseOp_ :: MonadBaseControl m => (Base m (StM m a) -> Base m (StM m b)) -> m a -> m b

Files

Control/Monad/Base/Control.hs view
@@ -94,3 +94,18 @@     type StM (AccumT a f) b = ComposeSt (AccumT a) f b     liftBaseWith = defaultLiftBaseWith     restoreM = defaultRestoreM++control :: MonadBaseControl m => (RunInBase m -> Base m (StM m a)) -> m a+control f = liftBaseWith f >>= restoreM++liftBaseOp :: MonadBaseControl m => ((a -> Base m (StM m b)) -> Base m (StM m c)) -> (a -> m b) -> m c+liftBaseOp f = \ g -> control (\ r -> f (r . g))++liftBaseOp_ :: MonadBaseControl m => (Base m (StM m a) -> Base m (StM m b)) -> m a -> m b+liftBaseOp_ f = liftBaseOp (f . ($ ())) . pure++liftBaseDiscard :: MonadBaseControl m => (Base m () -> Base m a) -> m () -> m a+liftBaseDiscard f = \ x -> liftBaseWith (\ r -> f (() <$ r x))++liftBaseOpDiscard :: MonadBaseControl m => ((a -> Base m ()) -> Base m b) -> (a -> m ()) -> m b+liftBaseOpDiscard f = \ g -> liftBaseWith (\ r -> f ((() <$) . r . g))
control.cabal view
@@ -1,5 +1,5 @@ name:                control-version:             0.1.0.0+version:             0.1.1.0 synopsis:            Class of monad transformers which control operations can be lifted thru -- description: license:             BSD3