diff --git a/src/Data/TotalMap.hs b/src/Data/TotalMap.hs
--- a/src/Data/TotalMap.hs
+++ b/src/Data/TotalMap.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wall #-}
 ----------------------------------------------------------------------
 -- |
@@ -17,6 +18,9 @@
 import Data.Monoid (Monoid(..),(<>))
 import Control.Applicative (Applicative(..),liftA2,(<$>))
 import Data.Maybe (fromMaybe)
+#if MIN_VERSION_base(4,11,0)
+import qualified Data.Semigroup as Sem
+#endif
 
 import Data.Map (Map)
 import qualified Data.Map as M
@@ -73,6 +77,11 @@
 
 -- These instances follow the principle that semantic functions (here (!))
 -- must be type class morphism (TCM) for all inhabited type classes.
+
+#if MIN_VERSION_base(4,11,0)
+instance (Ord k, Sem.Semigroup v) => Sem.Semigroup (TMap k v) where
+  (<>) = liftA2 (<>)
+#endif
 
 instance (Ord k, Monoid v) => Monoid (TMap k v) where
   mempty  = pure mempty
diff --git a/total-map.cabal b/total-map.cabal
--- a/total-map.cabal
+++ b/total-map.cabal
@@ -1,5 +1,5 @@
 Name:                total-map
-Version:             0.0.6
+Version:             0.0.7
 Cabal-Version:       >= 1.6
 Synopsis:            Finitely represented /total/ maps
 Category:            Data
