diff --git a/dependent-map.cabal b/dependent-map.cabal
--- a/dependent-map.cabal
+++ b/dependent-map.cabal
@@ -1,5 +1,5 @@
 name:                   dependent-map
-version:                0.2.3.0
+version:                0.2.4.0
 stability:              provisional
 
 cabal-version:          >= 1.6
@@ -37,6 +37,8 @@
                         Data.Dependent.Map.PtrEquality
   if impl(ghc < 7.8)
     other-modules:      Data.Dependent.Map.Typeable
+  if impl(ghc < 8)
+    build-depends:      semigroups
   build-depends:        base >= 3 && < 5,
                         containers,
                         dependent-sum >= 0.3.2
diff --git a/src/Data/Dependent/Map.hs b/src/Data/Dependent/Map.hs
--- a/src/Data/Dependent/Map.hs
+++ b/src/Data/Dependent/Map.hs
@@ -154,6 +154,7 @@
 #if !MIN_VERSION_base(4,8,0)
 import Data.Monoid
 #endif
+import Data.Semigroup
 import Data.Some
 import Text.Read
 import Data.Dependent.Map.PtrEquality
@@ -162,6 +163,9 @@
     mempty  = empty
     mappend = union
     mconcat = unions
+
+instance (GCompare k) => Semigroup (DMap k f) where
+  (<>) = mappend
 
 {--------------------------------------------------------------------
   Operators
