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


-- | Provides typeclass suitable for types admitting a partial order
--   
--   This packages provides the PartialOrd typeclass suitable for types
--   admitting a partial order. The only module exposed by this package is
--   Data.PartialOrd. Along with the PartialOrd typeclass and some utility
--   functions for working with partially ordered types, it exports
--   instances for certain numeric types along with instances for lists and
--   sets.
@package partial-order
@version 0.2.0.0


-- | This module provides the <a>PartialOrd</a> typeclass suitable for
--   types admitting a partial order.
--   
--   Along with the <a>PartialOrd</a> typeclass and some utility functions
--   for working with partially ordered types, it exports implementations
--   for the numeric types several numeric types, lists and sets.
module Data.PartialOrd
class PartialOrd a

-- | Less-than-or-equal relation.
(<=) :: PartialOrd a => a -> a -> Bool

-- | Bigger-than-or-equal relation. Defined in terms of <a>&lt;=</a>.
(>=) :: PartialOrd a => a -> a -> Bool

-- | Equality relation. Defined in terms of <a>&lt;=</a>.
(==) :: PartialOrd a => a -> a -> Bool

-- | Inequality relation. Defined in terms of <a>==</a>.
(/=) :: PartialOrd a => a -> a -> Bool

-- | Less-than relation relation. Defined in terms of <a>&lt;=</a> and
--   <a>/=</a>.
(<) :: PartialOrd a => a -> a -> Bool

-- | Bigger-than relation. Defined in terms of <a>&lt;=</a> and <a>/=</a>.
(>) :: PartialOrd a => a -> a -> Bool

-- | Compare function, returning either <a>Just</a> an <tt>Ordering</tt> or
--   <a>Nothing</a>.
compare :: PartialOrd a => a -> a -> Maybe Ordering

-- | Compute the list of all elements that are not less than any other
--   element in the list.
maxima :: PartialOrd a => [a] -> [a]

-- | Compute the list of all elements that are not bigger than any other
--   element in the list.
minima :: PartialOrd a => [a] -> [a]

-- | Version of the traditional elem function using the PartialOrd notion
--   of equality.
elem :: (PartialOrd a, Foldable t) => a -> t a -> Bool

-- | Version of the traditional notElem function using the PartialOrd
--   notion of equality.
notElem :: (PartialOrd a, Foldable t) => a -> t a -> Bool

-- | Version of the traditional nub function using the PartialOrd notion of
--   equality.
nub :: PartialOrd a => [a] -> [a]
instance Data.PartialOrd.PartialOrd GHC.Types.Int
instance Data.PartialOrd.PartialOrd GHC.Integer.Type.Integer
instance Data.PartialOrd.PartialOrd GHC.Types.Double
instance Data.PartialOrd.PartialOrd GHC.Types.Float
instance GHC.Classes.Ord a => Data.PartialOrd.PartialOrd (Data.Set.Internal.Set a)
instance Data.PartialOrd.PartialOrd a => Data.PartialOrd.PartialOrd [a]
