I think that you can directly go:
```scala
def reduceMonoid(implicit m: Monoid[A]): DObject[A] =
  reduceOption(Reduction.semigroup[A]) map (_ getOrElse m.zero)
```

and maybe we should call it `reduceMonoid` or just `fold` by analogy with `fold` the `Foldable` type class from scalaz. @tonymorris what do you think?