diff package:base-compat

This lets you use a difference list of a Semigroup as a Monoid.

Example:

>>> let hello = diff "Hello, "

>>> appEndo hello "World!"
"Hello, World!"

>>> appEndo (hello <> mempty) "World!"
"Hello, World!"

>>> appEndo (mempty <> hello) "World!"
"Hello, World!"

>>> let world = diff "World"

>>> let excl = diff "!"

>>> appEndo (hello <> (world <> excl)) mempty
"Hello, World!"

>>> appEndo ((hello <> world) <> excl) mempty
"Hello, World!"