packages feed

xml-extractors 0.4.0.2 → 0.4.0.3

raw patch · 2 files changed

+17/−7 lines, 2 files

Files

src/Text/XML/Light/Extractors/Internal/Result.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE CPP #-}++#define HAVE_MONAD_FAIL MIN_VERSION_base(4,9,0)+ module Text.XML.Light.Extractors.Internal.Result   ( Result(..)  , toEither@@ -14,7 +18,11 @@  ) where + import Control.Applicative+#if HAVE_MONAD_FAIL+import qualified Control.Monad.Fail as Fail+#endif import Control.Monad import Control.Monad.Trans.Error (Error, noMsg, strMsg) import Control.Monad.Trans.Class@@ -97,7 +105,7 @@   instance (Error e, Monad m) => MonadPlus (ResultT e m) where-  mzero = ResultT $ return (Fail noMsg)+  mzero = ResultT . return $ Fail noMsg      mplus x y = ResultT $ do                 l <- runResultT x@@ -117,8 +125,12 @@                 Fail  e -> return (Fail e)                 Ok    a -> runResultT (k a) -  fail msg = ResultT $ return $ Fail (strMsg msg)-+#if HAVE_MONAD_FAIL+instance (Monad m, Error e) => Fail.MonadFail (ResultT e m) where+  fail = throwError . strMsg+#else+  fail = throwError . strMsg+#endif  instance (Functor m, Monad m, Error e) => Alternative (ResultT e m) where   empty = mzero@@ -126,9 +138,7 @@   instance (Error e) => MonadTrans (ResultT e) where-  lift m = ResultT $ do-             a <- m-             return (Ok a)+  lift m = ResultT $ Ok <$> m   throwError :: (Error e, Monad m) => e -> ResultT e m a
xml-extractors.cabal view
@@ -1,5 +1,5 @@ name:                xml-extractors-version:             0.4.0.2+version:             0.4.0.3 synopsis:            Extension to the xml package to extract data from parsed xml description:   This library provides functions to simplify extraction of data from