-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Algebraic structures -- -- Algebraic structures @package alg @version 0.2.1.0 module Algebra -- | The class of semigroups (types with an associative binary operation). class Semigroup a -- | An associative operation. -- --
--   (a <> b) <> c = a <> (b <> c)
--   
-- -- If a is also a Monoid we further require -- --
--   (<>) = mappend
--   
(<>) :: Semigroup a => a -> a -> a -- | Reduce a non-empty list with <> -- -- The default definition should be sufficient, but this can be -- overridden for efficiency. sconcat :: Semigroup a => NonEmpty a -> a -- | Repeat a value n times. -- -- Given that this works on a Semigroup it is allowed to fail if -- you request 0 or fewer repetitions, and the default definition will do -- so. -- -- By making this a member of the class, idempotent semigroups and -- monoids can upgrade this to execute in O(1) by picking -- stimes = stimesIdempotent or stimes = -- stimesIdempotentMonoid respectively. stimes :: (Semigroup a, Integral b) => b -> a -> a -- | The class of monoids (types with an associative binary operation that -- has an identity). Instances should satisfy the following laws: -- -- -- -- The method names refer to the monoid of lists under concatenation, but -- there are many other instances. -- -- Some types can be viewed as a monoid in more than one way, e.g. both -- addition and multiplication on numbers. In such cases we often define -- newtypes and make those instances of Monoid, e.g. -- Sum and Product. class Monoid a -- | Identity of mappend mempty :: Monoid a => a class Monoid a => Group a invert :: Group a => a -> a class Semigroup a => Abelian a class Semigroup a => Idempotent a (+) :: Semigroup (Sum a) => a -> a -> a (-) :: (Semigroup (Sum a), Group (Sum a)) => a -> a -> a (*) :: Semigroup (Product a) => a -> a -> a (/) :: (Semigroup (Product a), Group (Product a)) => a -> a -> a instance Algebra.Group () instance (Algebra.Group a, Algebra.Group b) => Algebra.Group (a, b) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c) => Algebra.Group (a, b, c) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c, Algebra.Group d) => Algebra.Group (a, b, c, d) instance (Algebra.Group a, Algebra.Group b, Algebra.Group c, Algebra.Group d, Algebra.Group e) => Algebra.Group (a, b, c, d, e) instance Algebra.Group a => Algebra.Group (Data.Functor.Identity.Identity a) instance Algebra.Group a => Algebra.Group (Data.Monoid.Dual a) instance forall k (a :: k). Algebra.Group (Data.Proxy.Proxy a) instance forall k a (b :: k). Algebra.Group a => Algebra.Group (Data.Functor.Const.Const a b) instance Algebra.Group b => Algebra.Group (a -> b) instance Algebra.Group (Data.Monoid.Sum GHC.Integer.Type.Integer) instance Algebra.Group (Data.Monoid.Sum GHC.Types.Int) instance Algebra.Group (Data.Monoid.Sum GHC.Types.Word) instance Algebra.Idempotent () instance (Algebra.Idempotent a, Algebra.Idempotent b) => Algebra.Idempotent (a, b) instance (Algebra.Idempotent a, Algebra.Idempotent b, Algebra.Idempotent c) => Algebra.Idempotent (a, b, c) instance (Algebra.Idempotent a, Algebra.Idempotent b, Algebra.Idempotent c, Algebra.Idempotent d) => Algebra.Idempotent (a, b, c, d) instance (Algebra.Idempotent a, Algebra.Idempotent b, Algebra.Idempotent c, Algebra.Idempotent d, Algebra.Idempotent e) => Algebra.Idempotent (a, b, c, d, e) instance Algebra.Idempotent a => Algebra.Idempotent (Data.Functor.Identity.Identity a) instance Algebra.Idempotent a => Algebra.Idempotent (Data.Monoid.Dual a) instance forall k (a :: k). Algebra.Idempotent (Data.Proxy.Proxy a) instance forall k a (b :: k). Algebra.Idempotent a => Algebra.Idempotent (Data.Functor.Const.Const a b) instance Algebra.Idempotent b => Algebra.Idempotent (a -> b) instance GHC.Classes.Ord a => Algebra.Idempotent (Data.Semigroup.Min a) instance GHC.Classes.Ord a => Algebra.Idempotent (Data.Semigroup.Max a) instance Algebra.Abelian () instance (Algebra.Abelian a, Algebra.Abelian b) => Algebra.Abelian (a, b) instance (Algebra.Abelian a, Algebra.Abelian b, Algebra.Abelian c) => Algebra.Abelian (a, b, c) instance (Algebra.Abelian a, Algebra.Abelian b, Algebra.Abelian c, Algebra.Abelian d) => Algebra.Abelian (a, b, c, d) instance (Algebra.Abelian a, Algebra.Abelian b, Algebra.Abelian c, Algebra.Abelian d, Algebra.Abelian e) => Algebra.Abelian (a, b, c, d, e) instance Algebra.Abelian a => Algebra.Abelian (Data.Functor.Identity.Identity a) instance Algebra.Abelian a => Algebra.Abelian (Data.Monoid.Dual a) instance forall k (a :: k). Algebra.Abelian (Data.Proxy.Proxy a) instance forall k a (b :: k). Algebra.Abelian a => Algebra.Abelian (Data.Functor.Const.Const a b) instance Algebra.Abelian b => Algebra.Abelian (a -> b) instance Algebra.Abelian (Data.Monoid.Sum GHC.Natural.Natural) instance Algebra.Abelian (Data.Monoid.Sum GHC.Integer.Type.Integer) instance Algebra.Abelian (Data.Monoid.Sum GHC.Types.Word) instance Algebra.Abelian (Data.Monoid.Sum GHC.Types.Int) instance Algebra.Abelian (Data.Monoid.Product GHC.Natural.Natural) instance Algebra.Abelian (Data.Monoid.Product GHC.Integer.Type.Integer) instance Algebra.Abelian (Data.Monoid.Product GHC.Types.Word) instance Algebra.Abelian (Data.Monoid.Product GHC.Types.Int) instance Algebra.Abelian (Data.Semigroup.Min GHC.Natural.Natural) instance Algebra.Abelian (Data.Semigroup.Min GHC.Integer.Type.Integer) instance Algebra.Abelian (Data.Semigroup.Min GHC.Types.Word) instance Algebra.Abelian (Data.Semigroup.Min GHC.Types.Int) instance Algebra.Abelian (Data.Semigroup.Max GHC.Natural.Natural) instance Algebra.Abelian (Data.Semigroup.Max GHC.Integer.Type.Integer) instance Algebra.Abelian (Data.Semigroup.Max GHC.Types.Word) instance Algebra.Abelian (Data.Semigroup.Max GHC.Types.Int) instance Algebra.Abelian Data.Monoid.All instance Algebra.Abelian Data.Monoid.Any module Relation.Binary.Comparison class Preord a (≤) :: Preord a => a -> a -> Bool (≥) :: Preord a => a -> a -> Bool (<) :: Preord a => a -> a -> Bool (>) :: Preord a => a -> a -> Bool class PartialEq a (≡) :: PartialEq a => a -> a -> Bool (≢) :: PartialEq a => a -> a -> Bool class (Preord a, PartialEq a) => Eq a class (Preord a, PartialEq a) => PartialOrd a tryCompare :: PartialOrd a => a -> a -> Maybe Ordering class (PartialOrd a, Eq a) => Ord a compare :: Ord a => a -> a -> Ordering newtype Lexical a Lexical :: a -> Lexical a instance Algebra.Group a => Algebra.Group (Relation.Binary.Comparison.Lexical a) instance GHC.Base.Monoid a => GHC.Base.Monoid (Relation.Binary.Comparison.Lexical a) instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Relation.Binary.Comparison.Lexical a) instance Relation.Binary.Comparison.PartialEq a => Relation.Binary.Comparison.PartialEq (Relation.Binary.Comparison.Lexical a) instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b) => Relation.Binary.Comparison.Preord (Relation.Binary.Comparison.Lexical (a, b)) instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b) => Relation.Binary.Comparison.PartialOrd (Relation.Binary.Comparison.Lexical (a, b)) instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b, Relation.Binary.Comparison.Eq a, Relation.Binary.Comparison.Eq b) => Relation.Binary.Comparison.Eq (Relation.Binary.Comparison.Lexical (a, b)) instance (Relation.Binary.Comparison.Ord a, Relation.Binary.Comparison.Ord b) => Relation.Binary.Comparison.Ord (Relation.Binary.Comparison.Lexical (a, b)) instance (Relation.Binary.Comparison.Preord a, Relation.Binary.Comparison.Preord b) => Relation.Binary.Comparison.Preord (Relation.Binary.Comparison.Lexical (Data.Either.Either a b)) instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b) => Relation.Binary.Comparison.PartialOrd (Relation.Binary.Comparison.Lexical (Data.Either.Either a b)) instance (Relation.Binary.Comparison.Eq a, Relation.Binary.Comparison.Eq b) => Relation.Binary.Comparison.Eq (Relation.Binary.Comparison.Lexical (Data.Either.Either a b)) instance (Relation.Binary.Comparison.Ord a, Relation.Binary.Comparison.Ord b) => Relation.Binary.Comparison.Ord (Relation.Binary.Comparison.Lexical (Data.Either.Either a b)) instance Relation.Binary.Comparison.Ord () instance Relation.Binary.Comparison.Ord GHC.Types.Bool instance Relation.Binary.Comparison.Ord GHC.Types.Ordering instance Relation.Binary.Comparison.Ord GHC.Natural.Natural instance Relation.Binary.Comparison.Ord GHC.Integer.Type.Integer instance Relation.Binary.Comparison.PartialOrd () instance Relation.Binary.Comparison.PartialOrd GHC.Types.Bool instance Relation.Binary.Comparison.PartialOrd GHC.Types.Ordering instance Relation.Binary.Comparison.PartialOrd GHC.Natural.Natural instance Relation.Binary.Comparison.PartialOrd GHC.Integer.Type.Integer instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b) => Relation.Binary.Comparison.PartialOrd (a, b) instance (Relation.Binary.Comparison.PartialOrd a, Relation.Binary.Comparison.PartialOrd b) => Relation.Binary.Comparison.PartialOrd (Data.Either.Either a b) instance Relation.Binary.Comparison.PartialOrd a => Relation.Binary.Comparison.PartialOrd (GHC.Base.Maybe a) instance Relation.Binary.Comparison.Eq () instance Relation.Binary.Comparison.Eq GHC.Types.Bool instance Relation.Binary.Comparison.Eq GHC.Types.Ordering instance Relation.Binary.Comparison.Eq GHC.Natural.Natural instance Relation.Binary.Comparison.Eq GHC.Integer.Type.Integer instance Relation.Binary.Comparison.Eq a => Relation.Binary.Comparison.Eq (GHC.Base.Maybe a) instance Relation.Binary.Comparison.PartialEq () instance Relation.Binary.Comparison.PartialEq GHC.Types.Bool instance Relation.Binary.Comparison.PartialEq GHC.Types.Ordering instance Relation.Binary.Comparison.PartialEq GHC.Natural.Natural instance Relation.Binary.Comparison.PartialEq GHC.Integer.Type.Integer instance (Relation.Binary.Comparison.PartialEq a, Relation.Binary.Comparison.PartialEq b) => Relation.Binary.Comparison.PartialEq (a, b) instance (Relation.Binary.Comparison.PartialEq a, Relation.Binary.Comparison.PartialEq b) => Relation.Binary.Comparison.PartialEq (Data.Either.Either a b) instance Relation.Binary.Comparison.PartialEq a => Relation.Binary.Comparison.PartialEq (GHC.Base.Maybe a) instance Relation.Binary.Comparison.Preord () instance Relation.Binary.Comparison.Preord GHC.Types.Bool instance Relation.Binary.Comparison.Preord GHC.Types.Ordering instance Relation.Binary.Comparison.Preord GHC.Natural.Natural instance Relation.Binary.Comparison.Preord GHC.Integer.Type.Integer instance (Relation.Binary.Comparison.Preord a, Relation.Binary.Comparison.Preord b) => Relation.Binary.Comparison.Preord (a, b) instance (Relation.Binary.Comparison.Preord a, Relation.Binary.Comparison.Preord b) => Relation.Binary.Comparison.Preord (Data.Either.Either a b) instance Relation.Binary.Comparison.Preord a => Relation.Binary.Comparison.Preord (GHC.Base.Maybe a)