De-orphan the "MonadReader r ((->) r)" instance
authorIan Lynagh <igloo@earth.li>
Tue, 24 Nov 2009 14:35:40 +0000 (14:35 +0000)
committerIan Lynagh <igloo@earth.li>
Tue, 24 Nov 2009 14:35:40 +0000 (14:35 +0000)
Control/Monad/Reader.hs
Control/Monad/Reader/Class.hs

index 1ff583a..43a8f83 100644 (file)
@@ -1,4 +1,3 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}      -- Temporary, I hope.  SLPJ Aug08
 {-# OPTIONS -fallow-undecidable-instances #-}
 {- |
 Module      :  Control.Monad.Reader
@@ -69,13 +68,6 @@ import Control.Monad.State.Class
 import Control.Monad.Trans
 import Control.Monad.Writer.Class
 
--- ----------------------------------------------------------------------------
--- The partially applied function type is a simple reader monad
-
-instance MonadReader r ((->) r) where
-    ask       = id
-    local f m = m . f
-
 {- |
 The parameterizable reader monad.
 
index 24d5989..a8466c2 100644 (file)
@@ -42,6 +42,8 @@ module Control.Monad.Reader.Class (
     asks,
     ) where
 
+import Control.Monad.Instances ()
+
 {- |
 See examples in "Control.Monad.Reader".
 Note, the partially applied function type @(->) r@ is a simple reader monad.
@@ -60,6 +62,13 @@ class (Monad m) => MonadReader r m | m -> r where
     -}
     local :: (r -> r) -> m a -> m a
 
+-- ----------------------------------------------------------------------------
+-- The partially applied function type is a simple reader monad
+
+instance MonadReader r ((->) r) where
+    ask       = id
+    local f m = m . f
+
 {- |
 Retrieves a function of the current environment. Parameters: