monus-0.2.0.0: a 'Monus' is a commutative monoid that allows a notion of substraction.

Safe HaskellNone
LanguageHaskell2010

Data.Monoid.Monus

Description

A commutative monoid with monus is a Monoid equipped with a subtraction operator.

Synopsis

Documentation

class Monoid a => Monus a where Source #

A commutative monoid that supports subtraction. The following laws must hold:

x <> (y - x) = y <> (x - y)
(x - y) - z = x - (y <> z)
x - x = mempty
mempty - x = mempty

Minimal complete definition

monus

Methods

monus :: a -> a -> a Source #

Instances
Monus () Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: () -> () -> () Source #

Monus All Source #

Defined as P - Q = P ∨ ¬Q

Instance details

Defined in Data.Monoid.Monus

Methods

monus :: All -> All -> All Source #

Monus Any Source #

Defined as P - Q = P ∧ ¬Q

Instance details

Defined in Data.Monoid.Monus

Methods

monus :: Any -> Any -> Any Source #

Monus a => Monus [a] Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: [a] -> [a] -> [a] Source #

Monus a => Monus (Maybe a) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: Maybe a -> Maybe a -> Maybe a Source #

Monus a => Monus (IO a) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: IO a -> IO a -> IO a Source #

Monus a => Monus (Endo a) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: Endo a -> Endo a -> Endo a Source #

a ~ Natural => Monus (Sum a) Source #

Unlike the subtraction provided by the Num instance of Natural, this subtraction is total.

Instance details

Defined in Data.Monoid.Monus

Methods

monus :: Sum a -> Sum a -> Sum a Source #

Ord a => Monus (Set a) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: Set a -> Set a -> Set a Source #

Monus a => Monus (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Monus b => Monus (a -> b) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: (a -> b) -> (a -> b) -> a -> b Source #

(Monus a, Monus b) => Monus (a, b) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: (a, b) -> (a, b) -> (a, b) Source #

(Ord k, Monus v, Eq v) => Monus (Map k v) Source # 
Instance details

Defined in Data.Map.Annihilate

Methods

monus :: Map k v -> Map k v -> Map k v Source #

(Monus a, Monus b, Monus c) => Monus (a, b, c) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: (a, b, c) -> (a, b, c) -> (a, b, c) Source #

(Monus a, Monus b, Monus c, Monus d) => Monus (a, b, c, d) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source #

(Monus a, Monus b, Monus c, Monus d, Monus e) => Monus (a, b, c, d, e) Source # 
Instance details

Defined in Data.Monoid.Monus

Methods

monus :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source #

(-) :: Monus a => a -> a -> a infixl 6 Source #

An infix synonym for subtraction.