haddock-2.25.0: html-test/src/Bug1206.hs
{-# LANGUAGE Haskell2010 #-}
{- | Bug 1206
-}
{-# language FlexibleInstances #-}
module Bug1206 where
-- | A simple identity type
data T a = T a
deriving Show
-- | '<>' = 'T (a + b)'
--
-- Docs for the @Semigroup@ instance of @(T Int)@
--
-- ==== __Examples__
--
-- >>> T 2 <> T (3 :: Int)
-- T 5
instance {-# overlapping #-} Semigroup (T Int) where
(<>) (T a) (T b) = T (a + b)
-- | '<>' = 'T (a <> b)'
--
-- Docs for the @Semigroup@ instance of @Semigroup a => T a@
--
-- ==== __Examples__
--
-- >>> T (Product 1) <> T (Product 2)
-- T (Product {getProduct = 2})
instance {-# overlapping #-} Semigroup a => Semigroup (T a) where
(<>) (T a) (T b) = T (a <> b)
-- | 'mempty' = 'T mempty'
--
-- Docs for the @Monoid@ instance of @Monoid a => T a@
--
-- ==== __Examples__
--
-- >>> mempty :: T String
-- T ""
instance Monoid a => Monoid (T a) where
mempty = T mempty