| Copyright | (c) 2011-2015 diagrams-core team (see LICENSE) | 
|---|---|
| License | BSD-style (see LICENSE) | 
| Maintainer | diagrams-discuss@googlegroups.com | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
Data.Monoid.Split
Description
Sometimes we want to accumulate values from some monoid, but have the ability to introduce a "split" which separates values on either side. Only the rightmost split is kept. For example,
a b c | d e | f g h == a b c d e | f g h
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.  Single m's combine as usual;
   single m's combine with split values by combining with the
   value on the appropriate side; when two split values meet only
   the rightmost split is kept, with both the values from the left
   split combining with the left-hand value of the right split.
Data.Monoid.Cut is similar, but uses a different scheme for
   composition.  Split uses the asymmetric constructor :|, and
   Cut the symmetric constructor :||:, to emphasize the inherent
   asymmetry of Split and symmetry of Cut.  Split keeps only
   the rightmost split and combines everything on the left; Cut
   keeps the outermost splits and throws away everything in between.
Instances
| Functor Split | |
| Foldable Split | |
| Traversable Split | |
| Eq m => Eq (Split m) | |
| Data m => Data (Split m) | |
| Read m => Read (Split m) | |
| Show m => Show (Split m) | |
| (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.  | 
| Typeable (* -> *) Split |