sum a tuple of monoids

here is something, not quite what you are looking for, but close:

Monoid a => Monoid (Maybe a)
(Monoid a, Monoid b) => Monoid (a, b)

mappend (Just [1], Just [2,3]) (Nothing, Just [5])::(Maybe [Int],Maybe [Int])
(Just [1],Just [2,3,5])