summaryrefslogtreecommitdiff
path: root/lib/Hakyll/Web
diff options
context:
space:
mode:
authorChristian Barcenas <christian@cbarcenas.com>2018-02-11 03:22:28 -0800
committerJasper Van der Jeugt <jaspervdj@gmail.com>2018-03-13 15:17:22 +0100
commit000627c94a4d4aedb0a4216e781f6af65936ef9c (patch)
tree5e450aa70633a37b3fda41cf8aa3d0c77379b790 /lib/Hakyll/Web
parent157fef58b97527b05b0400ad98d9cbdd2a33a0f4 (diff)
downloadhakyll-000627c94a4d4aedb0a4216e781f6af65936ef9c.tar.gz
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.
Diffstat (limited to 'lib/Hakyll/Web')
-rw-r--r--lib/Hakyll/Web/Template/Context.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Hakyll/Web/Template/Context.hs b/lib/Hakyll/Web/Template/Context.hs
index b6c7994..d570506 100644
--- a/lib/Hakyll/Web/Template/Context.hs
+++ b/lib/Hakyll/Web/Template/Context.hs
@@ -35,6 +35,9 @@ module Hakyll.Web.Template.Context
import Control.Applicative (Alternative (..))
import Control.Monad (msum)
import Data.List (intercalate)
+#if MIN_VERSION_base(4,9,0)
+import Data.Semigroup (Semigroup (..))
+#endif
import Data.Time.Clock (UTCTime (..))
import Data.Time.Format (formatTime)
import qualified Data.Time.Format as TF
@@ -78,9 +81,18 @@ newtype Context a = Context
--------------------------------------------------------------------------------
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup (Context a) where
+ (<>) (Context f) (Context g) = Context $ \k a i -> f k a i <|> g k a i
+
+instance Monoid (Context a) where
+ mempty = missingField
+ mappend = (<>)
+#else
instance Monoid (Context a) where
mempty = missingField
mappend (Context f) (Context g) = Context $ \k a i -> f k a i <|> g k a i
+#endif
--------------------------------------------------------------------------------