-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | a 'Monus' is a commutative monoid that allows a notion of substraction. -- -- A Monus is a commutative monoid that allows a notion of -- substraction, with the following laws: -- -- x <> (y - x) = y <> (x - y) -- -- (x - y) - z = x - (y <> z) -- -- x - x = mempty -- -- mempty - x = mempty @package monus @version 0.2.0.0 -- | A commutative monoid with monus is a Monoid equipped -- with a subtraction operator. module Data.Monoid.Monus -- | 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
--   
class Monoid a => Monus a monus :: Monus a => a -> a -> a -- | An infix synonym for subtraction. (-) :: Monus a => a -> a -> a infixl 6 - instance GHC.Classes.Ord a => Data.Monoid.Monus.Monus (Data.Set.Internal.Set a) instance (a ~ GHC.Natural.Natural) => Data.Monoid.Monus.Monus (Data.Semigroup.Internal.Sum a) instance Data.Monoid.Monus.Monus Data.Semigroup.Internal.Any instance Data.Monoid.Monus.Monus Data.Semigroup.Internal.All instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Monus (Data.Semigroup.Internal.Endo a) instance Data.Monoid.Monus.Monus () instance (Data.Monoid.Monus.Monus a, Data.Monoid.Monus.Monus b) => Data.Monoid.Monus.Monus (a, b) instance (Data.Monoid.Monus.Monus a, Data.Monoid.Monus.Monus b, Data.Monoid.Monus.Monus c) => Data.Monoid.Monus.Monus (a, b, c) instance (Data.Monoid.Monus.Monus a, Data.Monoid.Monus.Monus b, Data.Monoid.Monus.Monus c, Data.Monoid.Monus.Monus d) => Data.Monoid.Monus.Monus (a, b, c, d) instance (Data.Monoid.Monus.Monus a, Data.Monoid.Monus.Monus b, Data.Monoid.Monus.Monus c, Data.Monoid.Monus.Monus d, Data.Monoid.Monus.Monus e) => Data.Monoid.Monus.Monus (a, b, c, d, e) instance Data.Monoid.Monus.Monus b => Data.Monoid.Monus.Monus (a -> b) instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Monus (GHC.Types.IO a) instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Monus [a] instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Monus (GHC.Base.Maybe a) module Data.Map.Annihilate -- | A Map that supports annihilation, i.e. it is a Monus, -- where for Monus values, matching keys will be subtracted, and -- keys not shared by both Maps will be discarded. data Map k v -- | Create a singleton Map. singleton :: (Monoid v, Eq v) => k -> v -> Map k v -- | Lookup a value in a Map. If no value is found, this returns -- mempty. lookup :: (Ord k, Monoid v) => k -> Map k v -> v instance (GHC.Show.Show k, GHC.Show.Show v) => GHC.Show.Show (Data.Map.Annihilate.Map k v) instance Data.Foldable.Foldable (Data.Map.Annihilate.Map k) instance GHC.Base.Functor (Data.Map.Annihilate.Map k) instance (GHC.Classes.Ord k, GHC.Classes.Ord v) => GHC.Classes.Ord (Data.Map.Annihilate.Map k v) instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.Map.Annihilate.Map k v) instance (GHC.Classes.Ord k, GHC.Base.Monoid v, GHC.Classes.Eq v) => GHC.Base.Semigroup (Data.Map.Annihilate.Map k v) instance (GHC.Classes.Ord k, GHC.Base.Monoid v, GHC.Classes.Eq v) => GHC.Base.Monoid (Data.Map.Annihilate.Map k v) instance (GHC.Classes.Ord k, Data.Monoid.Monus.Monus v, GHC.Classes.Eq v) => Data.Monoid.Monus.Monus (Data.Map.Annihilate.Map k v) -- | This module provides generic deriving tools for monuses for -- product-like structures. module Data.Monoid.Monus.Generic class GMonus f gmonus' :: GMonus f => f a -> f a -> f a -- | Generically generate a Monus monus operation for any -- type implementing Generic. It is only defined for product -- types. -- --
--   gmonus a b = gmonus b a
--   
gmonus :: (Generic a, GMonus (Rep a)) => a -> a -> a -- | This type is useful with -XDerivingVia. newtype WrappedMonus a WrappedMonus :: a -> WrappedMonus a instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Monoid.Monus.Generic.WrappedMonus a) instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.Monoid.Monus.Generic.WrappedMonus a) instance GHC.Generics.Generic (Data.Monoid.Monus.Generic.WrappedMonus a) instance Data.Monoid.Monus.Generic.GMonus GHC.Generics.U1 instance (Data.Monoid.Monus.Generic.GMonus a, Data.Monoid.Monus.Generic.GMonus b) => Data.Monoid.Monus.Generic.GMonus (a GHC.Generics.:*: b) instance Data.Monoid.Monus.Generic.GMonus a => Data.Monoid.Monus.Generic.GMonus (GHC.Generics.M1 i c a) instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Generic.GMonus (GHC.Generics.K1 i a) instance Data.Monoid.Monus.Monus a => Data.Monoid.Monus.Monus (Data.Monoid.Monus.Generic.WrappedMonus a)