Safe Haskell | None |
---|---|

Language | Haskell2010 |

# Documentation

The Difference Monoid.

!a :-: !a infixl 6 |

Monad Diff Source # | |

Functor Diff Source # | |

MonadFix Diff Source # | |

Applicative Diff Source # | |

Foldable Diff Source # | |

Traversable Diff Source # | |

Distributive Diff Source # | |

Representable Diff Source # | |

Read1 Diff Source # | |

Show1 Diff Source # | |

MonadZip Diff Source # | |

Comonad Diff Source # | |

ComonadApply Diff Source # | |

Traversable1 Diff Source # | |

Foldable1 Diff Source # | |

Apply Diff Source # | |

Bind Diff Source # | |

Extend Diff Source # | |

Adjunction Parity Diff Source # | |

Bounded a => Bounded (Diff a) Source # | |

(Eq a, Semigroup a) => Eq (Diff a) Source # | |

Data a => Data (Diff a) Source # | |

(Ord a, Semigroup a) => Ord (Diff a) Source # | |

Read a => Read (Diff a) Source # | |

Show a => Show (Diff a) Source # | |

Generic (Diff a) Source # | |

Semigroup a => Semigroup (Diff a) Source # | |

Monoid a => Monoid (Diff a) Source # | |

NFData a => NFData (Diff a) Source # | |

Monoid a => Group (Diff a) Source # | |

Generic1 * Diff Source # | |

type Rep Diff Source # | |

type Rep (Diff a) Source # | |

type Rep1 * Diff Source # | |

diff :: Monoid a => a -> Diff a Source #

Lift a monoid into the difference monoid.

`>>>`

Sum {getSum = 1} :-: Sum {getSum = 0}`diff (Sum 1)`

foldDiff :: Group b => (a -> b) -> Diff a -> b Source #

A group homomorphism given a monoid homomorphism.

normalize :: (a -> a -> (a, a)) -> Diff a -> Diff a Source #

Given a "normalizing" function, try simplify the representation.

For instance, one such normalizing function may be to take the numeric difference of two types:

`>>>`

`let sumNorm x y = if x >= y then (x - y, 0) else (0, y - x)`

`>>>`

Sum {getSum = 40} :-: Sum {getSum = 0}`normalize sumNorm ((foldMap (diff.Sum) [1..10]) <> (invert (foldMap (diff.Sum) [1..5])))`

runDiff :: (a -> a -> b) -> Diff a -> b Source #

Interpret the difference using a subtraction function.

Monad Parity Source # | |

Functor Parity Source # | |

MonadFix Parity Source # | |

Applicative Parity Source # | |

Foldable Parity Source # | |

Traversable Parity Source # | |

Comonad Parity Source # | |

ComonadApply Parity Source # | |

Traversable1 Parity Source # | |

Foldable1 Parity Source # | |

Apply Parity Source # | |

Bind Parity Source # | |

Extend Parity Source # | |

Adjunction Parity Diff Source # | |

ComonadEnv Odd Parity Source # | |

Bounded a => Bounded (Parity a) Source # | |

Eq a => Eq (Parity a) Source # | |

Ord a => Ord (Parity a) Source # | |

Read a => Read (Parity a) Source # | |

Show a => Show (Parity a) Source # | |

Ix a => Ix (Parity a) Source # | |

Semigroup a => Semigroup (Parity a) Source # | |

Monoid a => Monoid (Parity a) Source # | |

NFData a => NFData (Parity a) Source # | |

`>>>`

`import Data.Monoid hiding (diff, (<>))`