move Monad and MonadFix instances for Either to base (proposal #4159)
authorRoss Paterson <ross@soi.city.ac.uk>
Fri, 30 Jul 2010 15:40:34 +0000 (15:40 +0000)
committerRoss Paterson <ross@soi.city.ac.uk>
Fri, 30 Jul 2010 15:40:34 +0000 (15:40 +0000)
Control/Monad/Error.hs
mtl.cabal

index 7eda843..8636af7 100644 (file)
@@ -77,24 +77,11 @@ instance MonadError IOError IO where
 -- ---------------------------------------------------------------------------
 -- Our parameterizable error monad
 
-instance (Error e) => Monad (Either e) where
-    return        = Right
-    Left  l >>= _ = Left l
-    Right r >>= k = k r
-    fail msg      = Left (strMsg msg)
-
 instance (Error e) => MonadPlus (Either e) where
     mzero            = Left noMsg
     Left _ `mplus` n = n
     m      `mplus` _ = m
 
-instance (Error e) => MonadFix (Either e) where
-    mfix f = let
-        a = f $ case a of
-            Right r -> r
-            _       -> error "empty mfix argument"
-        in a
-
 instance (Error e) => MonadError e (Either e) where
     throwError             = Left
     Left  l `catchError` h = h l
index 70f8da0..1a411e7 100644 (file)
--- a/mtl.cabal
+++ b/mtl.cabal
@@ -35,7 +35,7 @@ exposed-modules:
     Control.Monad.Writer.Class
     Control.Monad.Writer.Lazy
     Control.Monad.Writer.Strict
-build-depends: base >= 3 && < 5
+build-depends: base >= 4.3 && < 5
 extensions: MultiParamTypeClasses,
             FunctionalDependencies,
             FlexibleInstances,