Hello community,

here is the log from the commit of package ghc-mtl for openSUSE:Factory checked 
in at 2015-08-23 15:43:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-mtl (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-mtl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-mtl"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-mtl/ghc-mtl.changes  2015-05-11 
19:48:40.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-mtl.new/ghc-mtl.changes     2015-08-23 
17:39:00.000000000 +0200
@@ -1,0 +2,13 @@
+Tue May 12 14:36:33 UTC 2015 - [email protected]
+
+- update to 2.2.1
+* Provide MINIMAL pragmas for `MonadState`, `MonadWriter`, `MonadReader`
+* Added a cyclic definition of `ask` in terms of `reader` for consistency with 
`get`/`put` vs. `state` and `tell` vs. `writer`
+* Fix deprecation warnings caused by `transformers` 0.4 deprecating `ErrorT`.
+* Added `Control.Monad.Except` in the style of the other `mtl` re-export 
modules
+* Fixed a bug caused by the change in how `transformers` 0.4 exports its data 
types. We will now export `runFooT` for each transformer again!
+* `transformers` 0.4 support
+* Added instances for `ExceptT`
+* Added `modify'` to `Control.Monad.State.*`
+
+-------------------------------------------------------------------

Old:
----
  mtl-2.1.3.1.tar.gz

New:
----
  mtl-2.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-mtl.spec ++++++
--- /var/tmp/diff_new_pack.H6D6G1/_old  2015-08-23 17:39:01.000000000 +0200
+++ /var/tmp/diff_new_pack.H6D6G1/_new  2015-08-23 17:39:01.000000000 +0200
@@ -18,7 +18,7 @@
 
 %global pkg_name mtl
 Name:           ghc-mtl
-Version:        2.1.3.1
+Version:        2.2.1
 Release:        0
 Summary:        Monad classes, using functional dependencies
 License:        BSD-3-Clause

++++++ mtl-2.1.3.1.tar.gz -> mtl-2.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/CHANGELOG.markdown 
new/mtl-2.2.1/CHANGELOG.markdown
--- old/mtl-2.1.3.1/CHANGELOG.markdown  2014-03-24 19:50:13.000000000 +0100
+++ new/mtl-2.2.1/CHANGELOG.markdown    2014-06-02 04:22:37.000000000 +0200
@@ -1,3 +1,20 @@
+2.2.1
+-------
+* Provide MINIMAL pragmas for `MonadState`, `MonadWriter`, `MonadReader`
+* Added a cyclic definition of `ask` in terms of `reader` for consistency with 
`get`/`put` vs. `state` and `tell` vs. `writer`
+* Fix deprecation warnings caused by `transformers` 0.4 deprecating `ErrorT`.
+* Added `Control.Monad.Except` in the style of the other `mtl` re-export 
modules
+
+2.2.0.1
+-------
+* Fixed a bug caused by the change in how `transformers` 0.4 exports its data 
types. We will now export `runFooT` for each transformer again!
+
+2.2
+---
+* `transformers` 0.4 support
+* Added instances for `ExceptT`
+* Added `modify'` to `Control.Monad.State.*`
+
 2.1.3.1
 -------
 * Avoid importing `Control.Monad.Instances` on GHC 7.8 to build without 
deprecation warnings.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Cont/Class.hs 
new/mtl-2.2.1/Control/Monad/Cont/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/Cont/Class.hs 2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/Cont/Class.hs   2014-06-02 04:22:37.000000000 
+0200
@@ -55,6 +55,7 @@
 import Control.Monad.Trans.Cont (ContT)
 import qualified Control.Monad.Trans.Cont as ContT
 import Control.Monad.Trans.Error as Error
+import Control.Monad.Trans.Except as Except
 import Control.Monad.Trans.Identity as Identity
 import Control.Monad.Trans.List as List
 import Control.Monad.Trans.Maybe as Maybe
@@ -99,6 +100,9 @@
 instance (Error e, MonadCont m) => MonadCont (ErrorT e m) where
     callCC = Error.liftCallCC callCC
 
+instance MonadCont m => MonadCont (ExceptT e m) where
+    callCC = Except.liftCallCC callCC
+
 instance MonadCont m => MonadCont (IdentityT m) where
     callCC = Identity.liftCallCC callCC
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Cont.hs 
new/mtl-2.2.1/Control/Monad/Cont.hs
--- old/mtl-2.1.3.1/Control/Monad/Cont.hs       2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/Cont.hs 2014-06-02 04:22:37.000000000 +0200
@@ -58,7 +58,8 @@
     mapCont,
     withCont,
     -- * The ContT monad transformer
-    ContT(..),
+    ContT(ContT),
+    runContT,
     mapContT,
     withContT,
     module Control.Monad,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Error/Class.hs 
new/mtl-2.2.1/Control/Monad/Error/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/Error/Class.hs        2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/Error/Class.hs  2014-06-02 04:22:37.000000000 
+0200
@@ -40,7 +40,9 @@
     MonadError(..),
   ) where
 
+import Control.Monad.Trans.Except (Except, ExceptT)
 import Control.Monad.Trans.Error (Error(..), ErrorT)
+import qualified Control.Monad.Trans.Except as ExceptT (throwE, catchE)
 import qualified Control.Monad.Trans.Error as ErrorT (throwError, catchError)
 import Control.Monad.Trans.Identity as Identity
 import Control.Monad.Trans.List as List
@@ -111,6 +113,10 @@
     throwError = ErrorT.throwError
     catchError = ErrorT.catchError
 
+instance Monad m => MonadError e (ExceptT e m) where
+    throwError = ExceptT.throwE
+    catchError = ExceptT.catchE
+
 -- ---------------------------------------------------------------------------
 -- Instances for other mtl transformers
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Error.hs 
new/mtl-2.2.1/Control/Monad/Error.hs
--- old/mtl-2.1.3.1/Control/Monad/Error.hs      2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/Error.hs        2014-06-02 04:22:37.000000000 
+0200
@@ -32,12 +32,14 @@
   inspired by the Haskell Monad Template Library from
     Andy Gill (<http://web.cecs.pdx.edu/~andy/>)
 -}
-module Control.Monad.Error (
+module Control.Monad.Error
+  {-# DEPRECATED "Use Control.Monad.Except instead" #-} (
     -- * Monads with error handling
     MonadError(..),
     Error(..),
     -- * The ErrorT monad transformer
-    ErrorT(..),
+    ErrorT(ErrorT),
+    runErrorT,
     mapErrorT,
     module Control.Monad,
     module Control.Monad.Fix,
@@ -51,7 +53,7 @@
 
 import Control.Monad.Error.Class
 import Control.Monad.Trans
-import Control.Monad.Trans.Error (ErrorT(..), mapErrorT)
+import Control.Monad.Trans.Error (ErrorT(ErrorT), runErrorT, mapErrorT)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Except.hs 
new/mtl-2.2.1/Control/Monad/Except.hs
--- old/mtl-2.1.3.1/Control/Monad/Except.hs     1970-01-01 01:00:00.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/Except.hs       2014-06-02 04:22:37.000000000 
+0200
@@ -0,0 +1,153 @@
+{-# LANGUAGE CPP #-}
+{- |
+Module      :  Control.Monad.Error
+Copyright   :  (c) Michael Weber <[email protected]> 2001,
+               (c) Jeff Newbern 2003-2006,
+               (c) Andriy Palamarchuk 2006
+License     :  BSD-style (see the file LICENSE)
+
+Maintainer  :  [email protected]
+Stability   :  experimental
+Portability :  non-portable (multi-parameter type classes)
+
+[Computation type:] Computations which may fail or throw exceptions.
+
+[Binding strategy:] Failure records information about the cause\/location
+of the failure. Failure values bypass the bound function,
+other values are used as inputs to the bound function.
+
+[Useful for:] Building computations from sequences of functions that may fail
+or using exception handling to structure error handling.
+
+[Example type:] @'Data.Either' String a@
+
+The Error monad (also called the Exception monad).
+-}
+
+{-
+  Rendered by Michael Weber <mailto:[email protected]>,
+  inspired by the Haskell Monad Template Library from
+    Andy Gill (<http://web.cecs.pdx.edu/~andy/>)
+-}
+module Control.Monad.Except
+  (
+    -- * Monads with error handling
+    MonadError(..),
+    -- * The ErrorT monad transformer
+    ExceptT(ExceptT),
+    Except,
+
+    runExceptT,
+    mapExceptT,
+    withExceptT,
+    runExcept,
+    mapExcept,
+    withExcept,
+
+    module Control.Monad,
+    module Control.Monad.Fix,
+    module Control.Monad.Trans,
+    -- * Example 1: Custom Error Data Type
+    -- $customErrorExample
+
+    -- * Example 2: Using ExceptT Monad Transformer
+    -- $ExceptTExample
+  ) where
+
+import Control.Monad.Error.Class
+import Control.Monad.Trans
+import Control.Monad.Trans.Except
+  ( ExceptT(ExceptT), Except, except
+  , runExcept, runExceptT
+  , mapExcept, mapExceptT
+  , withExcept, withExceptT
+  )
+
+import Control.Monad
+import Control.Monad.Fix
+
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ < 707
+import Control.Monad.Instances ()
+#endif
+
+{- $customErrorExample
+Here is an example that demonstrates the use of a custom error data type with
+the 'throwError' and 'catchError' exception mechanism from 'MonadError'.
+The example throws an exception if the user enters an empty string
+or a string longer than 5 characters. Otherwise it prints length of the string.
+
+>-- This is the type to represent length calculation error.
+>data LengthError = EmptyString  -- Entered string was empty.
+>          | StringTooLong Int   -- A string is longer than 5 characters.
+>                                -- Records a length of the string.
+>          | OtherError String   -- Other error, stores the problem 
description.
+>
+>-- Converts LengthError to a readable message.
+>instance Show LengthError where
+>  show EmptyString = "The string was empty!"
+>  show (StringTooLong len) =
+>      "The length of the string (" ++ (show len) ++ ") is bigger than 5!"
+>  show (OtherError msg) = msg
+>
+>-- For our monad type constructor, we use Either LengthError
+>-- which represents failure using Left LengthError
+>-- or a successful result of type a using Right a.
+>type LengthMonad = Either LengthError
+>
+>main = do
+>  putStrLn "Please enter a string:"
+>  s <- getLine
+>  reportResult (calculateLength s)
+>
+>-- Wraps length calculation to catch the errors.
+>-- Returns either length of the string or an error.
+>calculateLength :: String -> LengthMonad Int
+>calculateLength s = (calculateLengthOrFail s) `catchError` Left
+>
+>-- Attempts to calculate length and throws an error if the provided string is
+>-- empty or longer than 5 characters.
+>-- The processing is done in Either monad.
+>calculateLengthOrFail :: String -> LengthMonad Int
+>calculateLengthOrFail [] = throwError EmptyString
+>calculateLengthOrFail s | len > 5 = throwError (StringTooLong len)
+>                        | otherwise = return len
+>  where len = length s
+>
+>-- Prints result of the string length calculation.
+>reportResult :: LengthMonad Int -> IO ()
+>reportResult (Right len) = putStrLn ("The length of the string is " ++ (show 
len))
+>reportResult (Left e) = putStrLn ("Length calculation failed with error: " ++ 
(show e))
+-}
+
+{- $ExceptTExample
+@'ExceptT'@ monad transformer can be used to add error handling to another 
monad.
+Here is an example how to combine it with an @IO@ monad:
+
+>import Control.Monad.Except
+>
+>-- An IO monad which can return String failure.
+>-- It is convenient to define the monad type of the combined monad,
+>-- especially if we combine more monad transformers.
+>type LengthMonad = ExceptT String IO
+>
+>main = do
+>  -- runExceptT removes the ExceptT wrapper
+>  r <- runExceptT calculateLength
+>  reportResult r
+>
+>-- Asks user for a non-empty string and returns its length.
+>-- Throws an error if user enters an empty string.
+>calculateLength :: LengthMonad Int
+>calculateLength = do
+>  -- all the IO operations have to be lifted to the IO monad in the monad 
stack
+>  liftIO $ putStrLn "Please enter a non-empty string: "
+>  s <- liftIO getLine
+>  if null s
+>    then throwError "The string was empty!"
+>    else return $ length s
+>
+>-- Prints result of the string length calculation.
+>reportResult :: Either String Int -> IO ()
+>reportResult (Right len) = putStrLn ("The length of the string is " ++ (show 
len))
+>reportResult (Left e) = putStrLn ("Length calculation failed with error: " ++ 
(show e))
+-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/RWS/Class.hs 
new/mtl-2.2.1/Control/Monad/RWS/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/RWS/Class.hs  2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/RWS/Class.hs    2014-06-02 04:22:37.000000000 
+0200
@@ -33,6 +33,7 @@
 
 import Control.Monad.Trans.Class
 import Control.Monad.Trans.Error(Error, ErrorT)
+import Control.Monad.Trans.Except(ExceptT)
 import Control.Monad.Trans.Maybe(MaybeT)
 import Control.Monad.Trans.Identity(IdentityT)
 import Control.Monad.Trans.RWS.Lazy as Lazy (RWST)
@@ -53,6 +54,7 @@
 -- All of these instances need UndecidableInstances,
 -- because they do not satisfy the coverage condition.
 
+instance MonadRWS r w s m => MonadRWS r w s (ExceptT e m)
 instance (Error e, MonadRWS r w s m) => MonadRWS r w s (ErrorT e m)
 instance MonadRWS r w s m => MonadRWS r w s (IdentityT m)
 instance MonadRWS r w s m => MonadRWS r w s (MaybeT m)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/RWS/Lazy.hs 
new/mtl-2.2.1/Control/Monad/RWS/Lazy.hs
--- old/mtl-2.1.3.1/Control/Monad/RWS/Lazy.hs   2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/RWS/Lazy.hs     2014-06-02 04:22:37.000000000 
+0200
@@ -27,7 +27,8 @@
     mapRWS,
     withRWS,
     -- * The RWST monad transformer
-    RWST(..),
+    RWST(RWST),
+    runRWST,
     evalRWST,
     execRWST,
     mapRWST,
@@ -45,7 +46,7 @@
 import Control.Monad.Trans
 import Control.Monad.Trans.RWS.Lazy (
     RWS, rws, runRWS, evalRWS, execRWS, mapRWS, withRWS,
-    RWST(..), evalRWST, execRWST, mapRWST, withRWST)
+    RWST(RWST), runRWST, evalRWST, execRWST, mapRWST, withRWST)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/RWS/Strict.hs 
new/mtl-2.2.1/Control/Monad/RWS/Strict.hs
--- old/mtl-2.1.3.1/Control/Monad/RWS/Strict.hs 2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/RWS/Strict.hs   2014-06-02 04:22:37.000000000 
+0200
@@ -27,7 +27,8 @@
     mapRWS,
     withRWS,
     -- * The RWST monad transformer
-    RWST(..),
+    RWST(RWST),
+    runRWST,
     evalRWST,
     execRWST,
     mapRWST,
@@ -45,7 +46,7 @@
 import Control.Monad.Trans
 import Control.Monad.Trans.RWS.Strict (
     RWS, rws, runRWS, evalRWS, execRWS, mapRWS, withRWS,
-    RWST(..), evalRWST, execRWST, mapRWST, withRWST)
+    RWST(RWST), runRWST, evalRWST, execRWST, mapRWST, withRWST)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Reader/Class.hs 
new/mtl-2.2.1/Control/Monad/Reader/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/Reader/Class.hs       2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/Reader/Class.hs 2014-06-02 04:22:37.000000000 
+0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UndecidableInstances #-}
 -- Search for UndecidableInstances to see why this is needed
 {- |
@@ -43,6 +44,7 @@
     ) where
 
 import Control.Monad.Trans.Cont as Cont
+import Control.Monad.Trans.Except
 import Control.Monad.Trans.Error
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.List
@@ -68,8 +70,12 @@
 -- Note, the partially applied function type @(->) r@ is a simple reader monad.
 -- See the @instance@ declaration below.
 class Monad m => MonadReader r m | m -> r where
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+    {-# MINIMAL (ask | reader), local #-}
+#endif
     -- | Retrieves the monad environment.
     ask   :: m r
+    ask = reader id
 
     -- | Executes a computation in a modified environment.
     local :: (r -> r) -- ^ The function to modify the environment.
@@ -128,6 +134,11 @@
     local = mapErrorT . local
     reader = lift . reader
 
+instance MonadReader r m => MonadReader r (ExceptT e m) where
+    ask   = lift ask
+    local = mapExceptT . local
+    reader = lift . reader
+
 instance MonadReader r m => MonadReader r (IdentityT m) where
     ask   = lift ask
     local = mapIdentityT . local
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Reader.hs 
new/mtl-2.2.1/Control/Monad/Reader.hs
--- old/mtl-2.1.3.1/Control/Monad/Reader.hs     2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/Reader.hs       2014-06-02 04:22:37.000000000 
+0200
@@ -45,7 +45,8 @@
     mapReader,
     withReader,
     -- * The ReaderT monad transformer
-    ReaderT(..),
+    ReaderT(ReaderT),
+    runReaderT,
     mapReaderT,
     withReaderT,
     module Control.Monad,
@@ -65,7 +66,7 @@
 
 import Control.Monad.Trans.Reader (
     Reader, runReader, mapReader, withReader,
-    ReaderT(..), mapReaderT, withReaderT)
+    ReaderT(ReaderT), runReaderT, mapReaderT, withReaderT)
 import Control.Monad.Trans
 
 import Control.Monad
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/State/Class.hs 
new/mtl-2.2.1/Control/Monad/State/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/State/Class.hs        2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/State/Class.hs  2014-06-02 04:22:37.000000000 
+0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UndecidableInstances #-}
 -- Search for UndecidableInstances to see why this is needed
 
@@ -24,11 +25,13 @@
 module Control.Monad.State.Class (
     MonadState(..),
     modify,
-    gets,
+    modify',
+    gets
   ) where
 
 import Control.Monad.Trans.Cont
 import Control.Monad.Trans.Error
+import Control.Monad.Trans.Except
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.List
 import Control.Monad.Trans.Maybe
@@ -63,6 +66,9 @@
       let ~(a, s') = f s
       put s'
       return a
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+    {-# MINIMAL state | get, put #-}
+#endif
 
 -- | Monadic state transformer.
 --
@@ -78,6 +84,11 @@
 modify :: MonadState s m => (s -> s) -> m ()
 modify f = state (\s -> ((), f s))
 
+-- | A variant of 'modify' in which the computation is strict in the
+-- new state.
+modify' :: MonadState s m => (s -> s) -> m ()
+modify' f = state (\s -> let s' = f s in s' `seq` ((), s'))
+
 -- | Gets specific component of the state, using a projection function
 -- supplied.
 gets :: MonadState s m => (s -> a) -> m a
@@ -120,6 +131,11 @@
     get = lift get
     put = lift . put
     state = lift . state
+
+instance MonadState s m => MonadState s (ExceptT e m) where
+    get = lift get
+    put = lift . put
+    state = lift . state
 
 instance MonadState s m => MonadState s (IdentityT m) where
     get = lift get
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/State/Lazy.hs 
new/mtl-2.2.1/Control/Monad/State/Lazy.hs
--- old/mtl-2.1.3.1/Control/Monad/State/Lazy.hs 2014-03-24 19:50:13.000000000 
+0100
+++ new/mtl-2.2.1/Control/Monad/State/Lazy.hs   2014-06-02 04:22:37.000000000 
+0200
@@ -22,6 +22,7 @@
     -- * MonadState class
     MonadState(..),
     modify,
+    modify',
     gets,
     -- * The State monad
     State,
@@ -31,7 +32,8 @@
     mapState,
     withState,
     -- * The StateT monad transformer
-    StateT(..),
+    StateT(StateT),
+    runStateT,
     evalStateT,
     execStateT,
     mapStateT,
@@ -48,7 +50,7 @@
 import Control.Monad.Trans
 import Control.Monad.Trans.State.Lazy
         (State, runState, evalState, execState, mapState, withState,
-         StateT(..), evalStateT, execStateT, mapStateT, withStateT)
+         StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, 
withStateT)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/State/Strict.hs 
new/mtl-2.2.1/Control/Monad/State/Strict.hs
--- old/mtl-2.1.3.1/Control/Monad/State/Strict.hs       2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/State/Strict.hs 2014-06-02 04:22:37.000000000 
+0200
@@ -22,6 +22,7 @@
     -- * MonadState class
     MonadState(..),
     modify,
+    modify',
     gets,
     -- * The State monad
     State,
@@ -31,7 +32,8 @@
     mapState,
     withState,
     -- * The StateT monad transformer
-    StateT(..),
+    StateT(StateT),
+    runStateT,
     evalStateT,
     execStateT,
     mapStateT,
@@ -48,7 +50,7 @@
 import Control.Monad.Trans
 import Control.Monad.Trans.State.Strict
         (State, runState, evalState, execState, mapState, withState,
-         StateT(..), evalStateT, execStateT, mapStateT, withStateT)
+         StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, 
withStateT)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Writer/Class.hs 
new/mtl-2.2.1/Control/Monad/Writer/Class.hs
--- old/mtl-2.1.3.1/Control/Monad/Writer/Class.hs       2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/Writer/Class.hs 2014-06-02 04:22:37.000000000 
+0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UndecidableInstances #-}
 -- Search for UndecidableInstances to see why this is needed
 
@@ -27,6 +28,7 @@
   ) where
 
 import Control.Monad.Trans.Error as Error
+import Control.Monad.Trans.Except as Except
 import Control.Monad.Trans.Identity as Identity
 import Control.Monad.Trans.Maybe as Maybe
 import Control.Monad.Trans.Reader
@@ -58,6 +60,9 @@
 -- the written object.
 
 class (Monoid w, Monad m) => MonadWriter w m | m -> w where
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+    {-# MINIMAL (writer | tell), listen, pass #-}
+#endif
     -- | @'writer' (a,w)@ embeds a simple writer action.
     writer :: (a,w) -> m a
     writer ~(a, w) = do
@@ -131,6 +136,12 @@
     listen = Error.liftListen listen
     pass   = Error.liftPass pass
 
+instance MonadWriter w m => MonadWriter w (ExceptT e m) where
+    writer = lift . writer
+    tell   = lift . tell
+    listen = Except.liftListen listen
+    pass   = Except.liftPass pass
+
 instance MonadWriter w m => MonadWriter w (IdentityT m) where
     writer = lift . writer
     tell   = lift . tell
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/Control/Monad/Writer/Lazy.hs 
new/mtl-2.2.1/Control/Monad/Writer/Lazy.hs
--- old/mtl-2.1.3.1/Control/Monad/Writer/Lazy.hs        2014-03-24 
19:50:13.000000000 +0100
+++ new/mtl-2.2.1/Control/Monad/Writer/Lazy.hs  2014-06-02 04:22:37.000000000 
+0200
@@ -28,7 +28,8 @@
     execWriter,
     mapWriter,
     -- * The WriterT monad transformer
-    WriterT(..),
+    WriterT(WriterT),
+    runWriterT,
     execWriterT,
     mapWriterT,
     module Control.Monad,
@@ -42,7 +43,7 @@
 import Control.Monad.Trans
 import Control.Monad.Trans.Writer.Lazy (
         Writer, runWriter, execWriter, mapWriter,
-        WriterT(..), execWriterT, mapWriterT)
+        WriterT(WriterT), runWriterT, execWriterT, mapWriterT)
 
 import Control.Monad
 import Control.Monad.Fix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mtl-2.1.3.1/mtl.cabal new/mtl-2.2.1/mtl.cabal
--- old/mtl-2.1.3.1/mtl.cabal   2014-03-24 19:50:13.000000000 +0100
+++ new/mtl-2.2.1/mtl.cabal     2014-06-02 04:22:37.000000000 +0200
@@ -1,5 +1,5 @@
 name:         mtl
-version:      2.1.3.1
+version:      2.2.1
 cabal-version: >= 1.6
 license:      BSD3
 license-file: LICENSE
@@ -28,6 +28,7 @@
     Control.Monad.Cont.Class
     Control.Monad.Error
     Control.Monad.Error.Class
+    Control.Monad.Except
     Control.Monad.Identity
     Control.Monad.List
     Control.Monad.RWS
@@ -45,9 +46,9 @@
     Control.Monad.Writer.Class
     Control.Monad.Writer.Lazy
     Control.Monad.Writer.Strict
-  build-depends: base < 6, transformers == 0.3.*
+  build-depends: base < 6, transformers == 0.4.*
   extensions:
     MultiParamTypeClasses
     FunctionalDependencies
     FlexibleInstances
-  ghc-options: -Wall -fno-warn-unused-imports
+  ghc-options: -Wall -fno-warn-unused-imports -fno-warn-warnings-deprecations


Reply via email to