-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Algebraic structures
--   
--   Algebraic structures
@package alg
@version 0.2.5.0

module Algebra

-- | The class of semigroups (types with an associative binary operation).
--   
--   Instances should satisfy the associativity law:
--   
--   <ul>
--   <li><pre>x <a>&lt;&gt;</a> (y <a>&lt;&gt;</a> z) = (x <a>&lt;&gt;</a>
--   y) <a>&lt;&gt;</a> z</pre></li>
--   </ul>
class Semigroup a

-- | An associative operation.
(<>) :: Semigroup a => a -> a -> a

-- | Reduce a non-empty list with <tt>&lt;&gt;</tt>
--   
--   The default definition should be sufficient, but this can be
--   overridden for efficiency.
sconcat :: Semigroup a => NonEmpty a -> a

-- | Repeat a value <tt>n</tt> times.
--   
--   Given that this works on a <a>Semigroup</a> 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 <i>O(1)</i> by picking
--   <tt>stimes = <tt>stimesIdempotent</tt></tt> or <tt>stimes =
--   <a>stimesIdempotentMonoid</a></tt> 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:
--   
--   <ul>
--   <li><pre>x <a>&lt;&gt;</a> <a>mempty</a> = x</pre></li>
--   <li><pre><a>mempty</a> <a>&lt;&gt;</a> x = x</pre></li>
--   <li><tt>x <a>&lt;&gt;</a> (y <a>&lt;&gt;</a> z) = (x <a>&lt;&gt;</a>
--   y) <a>&lt;&gt;</a> z</tt> (<a>Semigroup</a> law)</li>
--   <li><pre><a>mconcat</a> = <a>foldr</a> '(&lt;&gt;)'
--   <a>mempty</a></pre></li>
--   </ul>
--   
--   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
--   <tt>newtype</tt>s and make those instances of <a>Monoid</a>, e.g.
--   <tt>Sum</tt> and <tt>Product</tt>.
--   
--   <b>NOTE</b>: <a>Semigroup</a> is a superclass of <a>Monoid</a> since
--   <i>base-4.11.0.0</i>.
class Semigroup a => Monoid a

-- | Identity of <a>mappend</a>
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
(×) :: Semigroup (Product a) => a -> a -> a
commuteWith :: Group b => (a -> a -> b) -> a -> a -> b
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.Semigroup.Internal.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.Semigroup.Internal.Sum GHC.Integer.Type.Integer)
instance Algebra.Group (Data.Semigroup.Internal.Sum GHC.Types.Int)
instance Algebra.Group (Data.Semigroup.Internal.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.Semigroup.Internal.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.Semigroup.Internal.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.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Algebra.Abelian (Data.Semigroup.Internal.Sum GHC.Integer.Type.Integer)
instance Algebra.Abelian (Data.Semigroup.Internal.Sum GHC.Types.Word)
instance Algebra.Abelian (Data.Semigroup.Internal.Sum GHC.Types.Int)
instance Algebra.Abelian (Data.Semigroup.Internal.Product GHC.Natural.Natural)
instance Algebra.Abelian (Data.Semigroup.Internal.Product GHC.Integer.Type.Integer)
instance Algebra.Abelian (Data.Semigroup.Internal.Product GHC.Types.Word)
instance Algebra.Abelian (Data.Semigroup.Internal.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.Semigroup.Internal.All
instance Algebra.Abelian Data.Semigroup.Internal.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
class (Monoid a, Abelian a, PartialOrd a) => Monus a
monus :: Monus a => a -> a -> a
(∸) :: Monus (Sum a) => a -> a -> 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 GHC.Base.Semigroup a => GHC.Base.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.Preord (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Relation.Binary.Comparison.PartialEq (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Relation.Binary.Comparison.PartialOrd (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Relation.Binary.Comparison.Eq (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Relation.Binary.Comparison.Ord (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
instance Relation.Binary.Comparison.Monus (Data.Semigroup.Internal.Sum GHC.Natural.Natural)
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.Ord GHC.Types.Int
instance Relation.Binary.Comparison.Ord GHC.Int.Int8
instance Relation.Binary.Comparison.Ord GHC.Int.Int16
instance Relation.Binary.Comparison.Ord GHC.Int.Int32
instance Relation.Binary.Comparison.Ord GHC.Int.Int64
instance Relation.Binary.Comparison.Ord GHC.Types.Word
instance Relation.Binary.Comparison.Ord GHC.Word.Word8
instance Relation.Binary.Comparison.Ord GHC.Word.Word16
instance Relation.Binary.Comparison.Ord GHC.Word.Word32
instance Relation.Binary.Comparison.Ord GHC.Word.Word64
instance Relation.Binary.Comparison.Ord GHC.Types.Char
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 GHC.Types.Int
instance Relation.Binary.Comparison.PartialOrd GHC.Int.Int8
instance Relation.Binary.Comparison.PartialOrd GHC.Int.Int16
instance Relation.Binary.Comparison.PartialOrd GHC.Int.Int32
instance Relation.Binary.Comparison.PartialOrd GHC.Int.Int64
instance Relation.Binary.Comparison.PartialOrd GHC.Types.Word
instance Relation.Binary.Comparison.PartialOrd GHC.Word.Word8
instance Relation.Binary.Comparison.PartialOrd GHC.Word.Word16
instance Relation.Binary.Comparison.PartialOrd GHC.Word.Word32
instance Relation.Binary.Comparison.PartialOrd GHC.Word.Word64
instance Relation.Binary.Comparison.PartialOrd GHC.Types.Char
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 GHC.Types.Int
instance Relation.Binary.Comparison.Eq GHC.Int.Int8
instance Relation.Binary.Comparison.Eq GHC.Int.Int16
instance Relation.Binary.Comparison.Eq GHC.Int.Int32
instance Relation.Binary.Comparison.Eq GHC.Int.Int64
instance Relation.Binary.Comparison.Eq GHC.Types.Word
instance Relation.Binary.Comparison.Eq GHC.Word.Word8
instance Relation.Binary.Comparison.Eq GHC.Word.Word16
instance Relation.Binary.Comparison.Eq GHC.Word.Word32
instance Relation.Binary.Comparison.Eq GHC.Word.Word64
instance Relation.Binary.Comparison.Eq GHC.Types.Char
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 GHC.Types.Int
instance Relation.Binary.Comparison.PartialEq GHC.Int.Int8
instance Relation.Binary.Comparison.PartialEq GHC.Int.Int16
instance Relation.Binary.Comparison.PartialEq GHC.Int.Int32
instance Relation.Binary.Comparison.PartialEq GHC.Int.Int64
instance Relation.Binary.Comparison.PartialEq GHC.Types.Word
instance Relation.Binary.Comparison.PartialEq GHC.Word.Word8
instance Relation.Binary.Comparison.PartialEq GHC.Word.Word16
instance Relation.Binary.Comparison.PartialEq GHC.Word.Word32
instance Relation.Binary.Comparison.PartialEq GHC.Word.Word64
instance Relation.Binary.Comparison.PartialEq GHC.Types.Char
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 GHC.Types.Int
instance Relation.Binary.Comparison.Preord GHC.Int.Int8
instance Relation.Binary.Comparison.Preord GHC.Int.Int16
instance Relation.Binary.Comparison.Preord GHC.Int.Int32
instance Relation.Binary.Comparison.Preord GHC.Int.Int64
instance Relation.Binary.Comparison.Preord GHC.Types.Word
instance Relation.Binary.Comparison.Preord GHC.Word.Word8
instance Relation.Binary.Comparison.Preord GHC.Word.Word16
instance Relation.Binary.Comparison.Preord GHC.Word.Word32
instance Relation.Binary.Comparison.Preord GHC.Word.Word64
instance Relation.Binary.Comparison.Preord GHC.Types.Char
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)

module Data.BitSet
newtype BitSet a
BitSet :: a -> BitSet a
[bits] :: BitSet a -> a
rangeInclusive :: (PartialOrd a, Bits a, Alternative f) => a -> a -> f a
(.&?¬) :: (PartialOrd a, Bits a) => a -> a -> Maybe a
instance GHC.Show.Show a => GHC.Show.Show (Data.BitSet.BitSet a)
instance GHC.Read.Read a => GHC.Read.Read (Data.BitSet.BitSet a)
instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Data.Bits.Bits (Data.BitSet.BitSet a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Relation.Binary.Comparison.Preord (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialEq (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Relation.Binary.Comparison.Eq (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialOrd (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => GHC.Base.Semigroup (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Algebra.Abelian (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => GHC.Base.Monoid (Data.BitSet.BitSet a)
instance Data.Bits.Bits a => Algebra.Group (Data.BitSet.BitSet a)
