diff --git a/monadplus.cabal b/monadplus.cabal
--- a/monadplus.cabal
+++ b/monadplus.cabal
@@ -1,6 +1,6 @@
 
 name:               monadplus
-version:            1.4.2
+version:            1.4.3
 cabal-version:      >= 1.10
 author:             Hans Hoglund
 maintainer:         Hans Hoglund <hans@hanshoglund.se>
diff --git a/src/Control/Monad/Plus.hs b/src/Control/Monad/Plus.hs
--- a/src/Control/Monad/Plus.hs
+++ b/src/Control/Monad/Plus.hs
@@ -61,7 +61,10 @@
   ) where
 
 import Control.Monad hiding (msum)
-import Control.Applicative
+import Control.Applicative                   
+import Control.Category (Category)
+import qualified Control.Category as Category
+import Data.Semigroup as Sem
 import Data.Monoid
 import Data.List (partition)
 import Data.Maybe (listToMaybe, maybeToList, catMaybes, mapMaybe, fromMaybe)
@@ -253,8 +256,17 @@
     empty = Partial (const Nothing)
     Partial f <|> Partial g = Partial $ \x -> f x <|> g x
 
+instance Category Partial where
+    id  = Partial (always id)
+    Partial f . Partial g = Partial $ \x -> do
+        y <- g x
+        f y
+
+instance Sem.Semigroup (Partial a b) where
+    (<>) = mplus
+
 instance Monoid (Partial a b) where
     mempty  = mzero
-    mappend = mplus
+    mappend = (<>)
 
 
