improve the homogeneity of how we express MINIMAL pragmas
authorEdward Kmett <ekmett@gmail.com>
Mon, 7 Sep 2015 06:43:07 +0000 (02:43 -0400)
committerEdward Kmett <ekmett@gmail.com>
Mon, 7 Sep 2015 06:43:07 +0000 (02:43 -0400)
Control/Monad/Cont/Class.hs
Control/Monad/Error/Class.hs
Control/Monad/Reader/Class.hs
Control/Monad/State/Class.hs
Control/Monad/Writer/Class.hs

index 3e64035..9eadf4c 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {- |
 Module      :  Control.Monad.Cont.Class
 Copyright   :  (c) The University of Glasgow 2001,
@@ -90,6 +91,9 @@ class Monad m => MonadCont m where
     even if it is many layers deep within nested computations.
     -}
     callCC :: ((a -> m b) -> m a) -> m a
+#if __GLASGOW_HASKELL__ >= 707
+    {-# MINIMAL callCC #-}
+#endif
 
 instance MonadCont (ContT r m) where
     callCC = ContT.callCC
index 714f599..4b8d8fe 100644 (file)
@@ -98,6 +98,9 @@ class (Monad m) => MonadError e m | m -> e where
     Note that @handler@ and the do-block must have the same return type.
     -}
     catchError :: m a -> (e -> m a) -> m a
+#if __GLASGOW_HASKELL__ >= 707
+    {-# MINIMAL throwError, catchError #-}
+#endif
 
 instance MonadError IOException IO where
     throwError = ioError
index 86276b5..86c5544 100644 (file)
@@ -70,7 +70,7 @@ import Data.Monoid
 -- 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
+#if __GLASGOW_HASKELL__ >= 707
     {-# MINIMAL (ask | reader), local #-}
 #endif
     -- | Retrieves the monad environment.
index 82f695f..fa33f70 100644 (file)
@@ -66,7 +66,7 @@ class Monad m => MonadState s m | m -> s where
       let ~(a, s') = f s
       put s'
       return a
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+#if __GLASGOW_HASKELL__ >= 707
     {-# MINIMAL state | get, put #-}
 #endif
 
index 702c8a2..e1bf737 100644 (file)
@@ -60,7 +60,7 @@ import Data.Monoid
 -- the written object.
 
 class (Monoid w, Monad m) => MonadWriter w m | m -> w where
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+#if __GLASGOW_HASKELL__ >= 707
     {-# MINIMAL (writer | tell), listen, pass #-}
 #endif
     -- | @'writer' (a,w)@ embeds a simple writer action.