From 14674e39d0701ce7226ae920cb1f02378d28589f Mon Sep 17 00:00:00 2001 From: Fumiaki Kinoshita Date: Wed, 30 Oct 2019 15:50:01 +0900 Subject: [PATCH] Support base-4.13 --- Cheapskate/ParserCombinators.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Cheapskate/ParserCombinators.hs b/Cheapskate/ParserCombinators.hs index d60699d..3ed4e1a 100644 --- a/Cheapskate/ParserCombinators.hs +++ b/Cheapskate/ParserCombinators.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} module Cheapskate.ParserCombinators ( Position(..) , Parser @@ -35,6 +36,7 @@ import Prelude hiding (takeWhile) import Data.Text (Text) import qualified Data.Text as T import Control.Monad +import qualified Control.Monad.Fail as Fail import Control.Applicative import qualified Data.Set as Set @@ -107,9 +109,14 @@ instance Alternative Parser where {-# INLINE empty #-} {-# INLINE (<|>) #-} +instance Fail.MonadFail Parser where + fail e = Parser $ \st -> Left $ ParseError (position st) e + instance Monad Parser where return x = Parser $ \st -> Right (st, x) - fail e = Parser $ \st -> Left $ ParseError (position st) e +#if !MIN_VERSION_base(4,13,0) + fail = Fail.fail +#endif p >>= g = Parser $ \st -> case evalParser p st of Left e -> Left e