Warning police: Avoid re-exporting things via different paths
authorsven.panne@aedion.de <unknown>
Wed, 7 Feb 2007 14:23:11 +0000 (14:23 +0000)
committersven.panne@aedion.de <unknown>
Wed, 7 Feb 2007 14:23:11 +0000 (14:23 +0000)
The modules in the mtl packages contain a lot of convenience re-exports, which
lead to a large number of warnings for Control.Monad.RWS. There are basically
3 ways to fix that:

   a) via hiding, leading to an epic "hiding ( ... )" clause

   b) via explicitly listing things which should be re-exported

   c) via refactoring the modules into convenience/implementation modules

Although c) would probably be the right solution in the long run, this patch
uses b), because it is the least intrusive way.

Control/Monad/RWS.hs

index 803e8dd..8f13950 100644 (file)
@@ -29,6 +29,10 @@ module Control.Monad.RWS (
        execRWST,
        mapRWST,
        withRWST,
+        module Control.Monad,
+        module Control.Monad.Fix,
+        module Control.Monad.Trans,
+        module Data.Monoid,
        module Control.Monad.Reader,
        module Control.Monad.Writer,
        module Control.Monad.State,
@@ -39,11 +43,22 @@ import Prelude
 import Control.Monad
 import Control.Monad.Fix
 import Control.Monad.Trans
-import Control.Monad.Reader
-import Control.Monad.Writer
-import Control.Monad.State
 import Data.Monoid
 
+-- To avoid warnings, only import what is unique to the module in question.
+import Control.Monad.Reader (
+       MonadReader(..), asks,
+       Reader(..), mapReader, withReader,
+       ReaderT(..), mapReaderT, withReaderT )
+import Control.Monad.Writer (
+       MonadWriter(..), listens, censor,
+       Writer(..), execWriter, mapWriter,
+       WriterT(..), execWriterT, mapWriterT )
+import Control.Monad.State (
+       MonadState(..), modify, gets,
+       State(..), evalState, execState, mapState, withState,
+       StateT(..), evalStateT, execStateT, mapStateT, withStateT )
+
 newtype RWS r w s a = RWS { runRWS :: r -> s -> (a, s, w) }
 
 instance Functor (RWS r w s) where