add MonadFail instance for ContT
authorRoss Paterson <ross@soi.city.ac.uk>
Wed, 25 Nov 2015 13:19:55 +0000 (13:19 +0000)
committerRoss Paterson <ross@soi.city.ac.uk>
Wed, 25 Nov 2015 13:19:55 +0000 (13:19 +0000)
Control/Monad/Trans/Cont.hs

index 4c68eaf..eaf5022 100644 (file)
@@ -53,6 +53,9 @@ import Control.Monad.Trans.Class
 import Data.Functor.Identity
 
 import Control.Applicative
+#if MIN_VERSION_base(4,9,0)
+import qualified Control.Monad.Fail as Fail
+#endif
 
 {- |
 Continuation monad.
@@ -153,6 +156,11 @@ instance Monad (ContT r m) where
 #endif
     m >>= k  = ContT $ \ c -> runContT m (\ x -> runContT (k x) c)
 
+#if MIN_VERSION_base(4,9,0)
+instance (Fail.MonadFail m) => Fail.MonadFail (ContT r m) where
+    fail msg = ContT $ \ _ -> Fail.fail msg
+#endif
+
 instance MonadTrans (ContT r) where
     lift m = ContT (m >>=)