diff --git a/Data/Constraint.hs b/Data/Constraint.hs
--- a/Data/Constraint.hs
+++ b/Data/Constraint.hs
@@ -11,6 +11,7 @@
 {-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE Rank2Types #-}
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE CPP #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Constraint
@@ -41,8 +42,8 @@
   , Class(..)
   , (:=>)(..)
   ) where
-
 import Control.Monad
+import Control.Category
 import Control.Applicative
 import Data.Monoid
 import Data.Complex
@@ -59,6 +60,12 @@
 
 infixr 9 :-
 newtype a :- b = Sub (a => Dict b)
+
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+instance Category (:-) where
+  id  = refl
+  (.) = trans
+#endif
 
 instance Eq (a :- b) where
   _ == _ = True
diff --git a/Data/Constraint/Unsafe.hs b/Data/Constraint/Unsafe.hs
--- a/Data/Constraint/Unsafe.hs
+++ b/Data/Constraint/Unsafe.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE Rank2Types #-}
 {-# LANGUAGE GADTs #-}
+{-# LANGUAGE Unsafe #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Constraint.Unsafe
diff --git a/constraints.cabal b/constraints.cabal
--- a/constraints.cabal
+++ b/constraints.cabal
@@ -1,6 +1,6 @@
 name:          constraints
 category:      Constraints
-version:       0.3.2
+version:       0.3.3
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
