From 000627c94a4d4aedb0a4216e781f6af65936ef9c Mon Sep 17 00:00:00 2001 From: Christian Barcenas Date: Sun, 11 Feb 2018 03:22:28 -0800 Subject: Add Semigroup instances for existing Monoids Ensures forwards compatibility with future Haskell/GHC releases as the Semigroup/Monoid Proposal is gradually implemented. Closes #525 and #536. --- lib/Hakyll/Core/Compiler/Internal.hs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib/Hakyll/Core/Compiler/Internal.hs') diff --git a/lib/Hakyll/Core/Compiler/Internal.hs b/lib/Hakyll/Core/Compiler/Internal.hs index 7b1df83..5b6d1aa 100644 --- a/lib/Hakyll/Core/Compiler/Internal.hs +++ b/lib/Hakyll/Core/Compiler/Internal.hs @@ -1,5 +1,6 @@ -------------------------------------------------------------------------------- -- | Internally used compiler module +{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -32,6 +33,9 @@ import Control.Applicative (Alternative (..)) import Control.Exception (SomeException, handle) import Control.Monad (forM_) import Control.Monad.Except (MonadError (..)) +#if MIN_VERSION_base(4,9,0) +import Data.Semigroup (Semigroup (..)) +#endif import Data.Set (Set) import qualified Data.Set as S @@ -83,10 +87,20 @@ data CompilerWrite = CompilerWrite -------------------------------------------------------------------------------- +#if MIN_VERSION_base(4,9,0) +instance Semigroup CompilerWrite where + (<>) (CompilerWrite d1 h1) (CompilerWrite d2 h2) = + CompilerWrite (d1 ++ d2) (h1 + h2) + +instance Monoid CompilerWrite where + mempty = CompilerWrite [] 0 + mappend = (<>) +#else instance Monoid CompilerWrite where mempty = CompilerWrite [] 0 mappend (CompilerWrite d1 h1) (CompilerWrite d2 h2) = CompilerWrite (d1 ++ d2) (h1 + h2) +#endif -------------------------------------------------------------------------------- -- cgit v1.2.3