Maintainer | bastiaan.heeren@ou.nl |
---|---|

Stability | provisional |

Portability | portable (depends on ghc) |

Safe Haskell | None |

Language | Haskell98 |

- associative :: Monoid a => Law a
- leftIdentity :: Monoid a => Law a
- rightIdentity :: Monoid a => Law a
- identityLaws :: Monoid a => [Law a]
- monoidLaws :: Monoid a => [Law a]
- commutativeMonoidLaws :: Monoid a => [Law a]
- idempotent :: Monoid a => Law a
- leftInverse :: Group a => Law a
- rightInverse :: Group a => Law a
- doubleInverse :: Group a => Law a
- inverseIdentity :: Group a => Law a
- inverseDistrFlipped :: Group a => Law a
- inverseLaws :: Group a => [Law a]
- groupLaws :: Group a => [Law a]
- appendInverseLaws :: Group a => [Law a]
- commutative :: Monoid a => Law a
- inverseDistr :: Group a => Law a
- abelianGroupLaws :: Group a => [Law a]
- leftZero :: MonoidZero a => Law a
- rightZero :: MonoidZero a => Law a
- zeroLaws :: MonoidZero a => [Law a]
- monoidZeroLaws :: MonoidZero a => [Law a]
- associativeFor :: (a -> a -> a) -> Law a
- commutativeFor :: (a -> a -> a) -> Law a
- idempotentFor :: (a -> a -> a) -> Law a
- leftDistributiveFor :: (a -> a -> a) -> (a -> a -> a) -> Law a
- rightDistributiveFor :: (a -> a -> a) -> (a -> a -> a) -> Law a

# Monoid laws

associative :: Monoid a => Law a Source

leftIdentity :: Monoid a => Law a Source

rightIdentity :: Monoid a => Law a Source

identityLaws :: Monoid a => [Law a] Source

monoidLaws :: Monoid a => [Law a] Source

commutativeMonoidLaws :: Monoid a => [Law a] Source

idempotent :: Monoid a => Law a Source

Not all monoids are idempotent (see: idempotentFor)

# Group laws

leftInverse :: Group a => Law a Source

rightInverse :: Group a => Law a Source

doubleInverse :: Group a => Law a Source

inverseIdentity :: Group a => Law a Source

inverseDistrFlipped :: Group a => Law a Source

inverseLaws :: Group a => [Law a] Source

appendInverseLaws :: Group a => [Law a] Source

# Abelian group laws

commutative :: Monoid a => Law a Source

inverseDistr :: Group a => Law a Source

abelianGroupLaws :: Group a => [Law a] Source

# Laws for monoids with a zero element

leftZero :: MonoidZero a => Law a Source

rightZero :: MonoidZero a => Law a Source

zeroLaws :: MonoidZero a => [Law a] Source

monoidZeroLaws :: MonoidZero a => [Law a] Source

# Generalized laws

associativeFor :: (a -> a -> a) -> Law a Source

commutativeFor :: (a -> a -> a) -> Law a Source

idempotentFor :: (a -> a -> a) -> Law a Source

leftDistributiveFor :: (a -> a -> a) -> (a -> a -> a) -> Law a Source

rightDistributiveFor :: (a -> a -> a) -> (a -> a -> a) -> Law a Source