-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Algebraic structures -- -- Algebraic structures @package alg @version 0.2.6.0 module Algebra -- | The class of semigroups (types with an associative binary operation). -- -- Instances should satisfy the associativity law: -- -- class Semigroup a -- | An associative operation. (<>) :: 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. -- -- NOTE: Semigroup is a superclass of Monoid since -- base-4.11.0.0. class Semigroup a => 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 (-) :: 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 max :: Ord a => a -> a -> a min :: Ord a => a -> a -> a newtype Max a Max :: a -> Max a [unMax] :: Max a -> a newtype Min a Min :: a -> Min a [unMin] :: Min a -> a instance GHC.Show.Show a => GHC.Show.Show (Relation.Binary.Comparison.Min a) instance GHC.Read.Read a => GHC.Read.Read (Relation.Binary.Comparison.Min a) instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (Relation.Binary.Comparison.Min a) instance Data.Bits.Bits a => Data.Bits.Bits (Relation.Binary.Comparison.Min a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Relation.Binary.Comparison.Min a) instance GHC.Show.Show a => GHC.Show.Show (Relation.Binary.Comparison.Max a) instance GHC.Read.Read a => GHC.Read.Read (Relation.Binary.Comparison.Max a) instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (Relation.Binary.Comparison.Max a) instance Data.Bits.Bits a => Data.Bits.Bits (Relation.Binary.Comparison.Max a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Relation.Binary.Comparison.Max 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.PartialEq a => Relation.Binary.Comparison.PartialEq (Data.Ord.Down a) instance Relation.Binary.Comparison.Eq a => Relation.Binary.Comparison.Eq (Data.Ord.Down 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.Ord a => GHC.Base.Semigroup (Relation.Binary.Comparison.Min a) instance Relation.Binary.Comparison.Ord a => GHC.Base.Semigroup (Relation.Binary.Comparison.Max a) 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.Preord a => Relation.Binary.Comparison.Preord (Relation.Binary.Comparison.Lexical (GHC.Base.Maybe a)) instance Relation.Binary.Comparison.PartialOrd a => Relation.Binary.Comparison.PartialOrd (Relation.Binary.Comparison.Lexical (GHC.Base.Maybe a)) instance Relation.Binary.Comparison.Eq a => Relation.Binary.Comparison.Eq (Relation.Binary.Comparison.Lexical (GHC.Base.Maybe a)) instance Relation.Binary.Comparison.Ord a => Relation.Binary.Comparison.Ord (Relation.Binary.Comparison.Lexical (GHC.Base.Maybe a)) instance Relation.Binary.Comparison.Ord a => Relation.Binary.Comparison.Ord (Data.Ord.Down a) 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 a => Relation.Binary.Comparison.PartialOrd (Data.Ord.Down a) 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 a => Relation.Binary.Comparison.Preord (Data.Ord.Down 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) instance Data.Bits.Bits a => GHC.Base.Semigroup (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => GHC.Base.Semigroup (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Algebra.Abelian (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Algebra.Abelian (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Algebra.Idempotent (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Algebra.Idempotent (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => GHC.Base.Monoid (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => GHC.Base.Monoid (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Preord (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Preord (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialEq (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialEq (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Eq (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Eq (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialOrd (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.PartialOrd (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Monus (Relation.Binary.Comparison.Max (Data.BitSet.BitSet a)) instance Data.Bits.Bits a => Relation.Binary.Comparison.Monus (Relation.Binary.Comparison.Min (Data.BitSet.BitSet a))