Maintainer | diagrams-discuss@googlegroups.com |
---|---|

Safe Haskell | Safe-Infered |

Sometimes we want to accumulate values from some monoid, but have
the ability to introduce a "split" which separates values on
either side. For example, in the diagrams graphics framework this
is used when accumulating transformations to be applied to
primitive diagrams: the `freeze`

operation introduces a split,
since only transformations occurring outside the freeze should be
applied to attributes.

# Documentation

A value of type `Split m`

is either a single `m`

, or a pair of
`m`

's separated by a divider.

(Semigroup m, Monoid m) => Monoid (Split m) | |

Semigroup m => Semigroup (Split m) | If |

Action m n => Action (Split m) n | By default, the action of a split monoid is the same as for the underlying monoid, as if the split were removed. |