Implemented in
http://code.google.com/r/mauricioscheffer-fsharp-typeclasses/source/detail?r=d10
13cf83bdaa90eb391e274ab00ec6049d3fe8a
I wonder if this could be generalized for any monoid.
Also investigating if general functor/applicative composition could be encoded,
as in
http://hackage.haskell.org/packages/archive/transformers/latest/doc/html/src/Dat
a-Functor-Compose.html#Compose