HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulererebase-1.21.2Haskell2010

Data.Ord

  • 2 types
  • 1 class
  • 2 values
  • Packagererebase-1.21.2
  • Exports5
  • LanguageHaskell2010
  • LicenceMIT
  • SourceClasses.hs
classclass Eq a => Ord a where
#

The Ord class is used for totally ordered datatypes.

Instances of Ord can be derived for any user-defined datatype whose constituent types are in Ord. The declared order of the constructors in the data declaration determines the ordering in derived Ord instances. The Ordering datatype allows a single comparison to determine the precise ordering of two objects.

Ord, as defined by the Haskell report, implements a total order and has the following properties:

Comparability

x <= y || y <= x

=

True

Transitivity

if

x <= y && y <= z

=

True

, then

x <= z

=

True

Reflexivity

x <= x

=

True

Antisymmetry

if

x <= y && y <= x

=

True

, then

x == y

=

True

The following operator interactions are expected to hold:

  1. x >= y = y <= x

  2. x < y = x <= y && x /= y

  3. x > y = y < x

  4. x < y = compare x y == LT

  5. x > y = compare x y == GT

  6. x == y = compare x y == EQ

  7. min x y == if x <= y then x else y = True

  8. max x y == if x >= y then x else y = True

Note that (7.) and (8.) do not require min and max to return either of their arguments. The result is merely required to equal one of the arguments in terms of (==).

Minimal complete definition: either compare or <=. Using compare can be more efficient for complex types.

Methods

Instances352Ord, …
  • Ord ByteArrayDefined in base-4.20.2.0 · Data.Array.Byte

    Non-lexicographic ordering. This compares the lengths of the byte arrays first and uses a lexicographic ordering if the lengths are equal. Subject to change between major versions.

  • Ord OptionsDefined in bifunctors-5.6.2 · Data.Bifunctor.TH
  • Ord ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Ord ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Ord ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal

    Lexicographic order.

  • Ord IntSetDefined in containers-0.7 · Data.IntSet.Internal
  • Ord BigNatDefined in ghc-bignum-1.3 · GHC.Num.BigNat
  • Ord IntegerDefined in ghc-bignum-1.3 · GHC.Num.Integer
  • Ord NaturalDefined in ghc-bignum-1.3 · GHC.Num.Natural
  • Ord ExtensionDefined in ghc-boot-th-9.10.3 · GHC.LanguageExtensions.Type
  • Ord VoidDefined in ghc-internal-9.1003.0 · GHC.Internal.Base
  • Ord ByteOrderDefined in ghc-internal-9.1003.0 · GHC.Internal.ByteOrder
  • Ord ClosureTypeDefined in ghc-internal-9.1003.0 · GHC.Internal.ClosureTypes
  • Ord BlockReasonDefined in ghc-internal-9.1003.0 · GHC.Internal.Conc.Sync
  • Ord ThreadIdDefined in ghc-internal-9.1003.0 · GHC.Internal.Conc.Sync
  • Ord ThreadStatusDefined in ghc-internal-9.1003.0 · GHC.Internal.Conc.Sync
  • Ord AllDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord AnyDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord SomeTypeRepDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Typeable.Internal
  • Ord UniqueDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Unique
  • Ord VersionDefined in ghc-internal-9.1003.0 · GHC.Internal.Data.Version
  • Ord TimeoutKeyDefined in ghc-internal-9.1003.0 · GHC.Internal.Event.TimeOut
  • Ord UniqueDefined in ghc-internal-9.1003.0 · GHC.Internal.Event.Unique
  • Ord ErrorCallDefined in ghc-internal-9.1003.0 · GHC.Internal.Exception
  • Ord ArithExceptionDefined in ghc-internal-9.1003.0 · GHC.Internal.Exception.Type
  • Ord FingerprintDefined in ghc-internal-9.1003.0 · GHC.Internal.Fingerprint.Type
  • Ord CBoolDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CClockDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CDoubleDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CFloatDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntMaxDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CLLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CPtrdiffDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CSCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CSUSecondsDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CShortDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CSigAtomicDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CSizeDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CTimeDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntMaxDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CULLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CULongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUSecondsDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CUShortDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord CWcharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ord IntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.Ptr
  • Ord WordPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.Ptr
  • Ord AssociativityDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord DecidedStrictnessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord FixityDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord SourceStrictnessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord SourceUnpackednessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord SeekModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Device
  • Ord ArrayExceptionDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Exception
  • Ord AsyncExceptionDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Exception
  • Ord ExitCodeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Exception
  • Ord BufferModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Handle.Types
  • Ord NewlineDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Handle.Types
  • Ord NewlineModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Handle.Types
  • Ord IOModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.IOMode
  • Ord Int16Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ord Int32Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ord Int64Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ord Int8Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ord CBlkCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CBlkSizeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CCcDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CClockIdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CDevDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CFsBlkCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CFsFilCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CGidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CIdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CInoDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CKeyDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CModeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CNfdsDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CNlinkDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord COffDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CPidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CRLimDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CSocklenDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CSpeedDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CSsizeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CTcflagDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CTimerDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord CUidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord FdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ord SomeCharDefined in ghc-internal-9.1003.0 · GHC.Internal.TypeLits
  • Ord SomeSymbolDefined in ghc-internal-9.1003.0 · GHC.Internal.TypeLits
  • Ord SomeNatDefined in ghc-internal-9.1003.0 · GHC.Internal.TypeNats
  • Ord GeneralCategoryDefined in ghc-internal-9.1003.0 · GHC.Internal.Unicode
  • Ord Word16Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ord Word32Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ord Word64Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ord Word8Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ord BoolDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord CharDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord DoubleDefined in ghc-prim-0.12.0 · GHC.Classes

    IEEE 754 Double-precision type includes not only numbers, but also positive and negative infinities and a special element called NaN (which can be quiet or signal).

    IEEE 754-2008, section 5.11 requires that if at least one of arguments of <=, <, >, >= is NaN then the result of the comparison is False, and instance Ord Double complies with this requirement. This violates the reflexivity: both NaN <= NaN and NaN >= NaN are False.

    IEEE 754-2008, section 5.10 defines totalOrder predicate. Unfortunately, compare on Doubles violates the IEEE standard and does not define a total order. More specifically, both compare NaN x and compare x NaN always return GT.

    Thus, users must be extremely cautious when using instance Ord Double. For instance, one should avoid ordered containers with keys represented by Double, because data loss and corruption may happen. An IEEE-compliant compare is available in fp-ieee package as TotallyOrdered newtype.

    Moving further, the behaviour of min and max with regards to NaN is also non-compliant. IEEE 754-2008, section 5.3.1 defines that quiet NaN should be treated as a missing data by minNum and maxNum functions, for example, minNum(NaN, 1) = minNum(1, NaN) = 1. Some languages such as Java deviate from the standard implementing minNum(NaN, 1) = minNum(1, NaN) = NaN. However, min / max in base are even worse: min NaN 1 is 1, but min 1 NaN is NaN.

    IEEE 754-2008 compliant min / max can be found in ieee754 package under minNum / maxNum names. Implementations compliant with minimumNumber / maximumNumber from a newer IEEE 754-2019, section 9.6 are available from fp-ieee package.

  • Ord FloatDefined in ghc-prim-0.12.0 · GHC.Classes

    See instance Ord Double for discussion of deviations from IEEE 754 standard.

  • Ord IntDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord OrderingDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord TyConDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord WordDefined in ghc-prim-0.12.0 · GHC.Classes
  • Ord OptionsDefined in invariant-0.6.4 · Data.Functor.Invariant.TH
  • Ord InvariantClassDefined in invariant-0.6.4 · Data.Functor.Invariant.TH.Internal
  • Ord OsCharDefined in os-string-2.0.7 · System.OsString.Internal.Types

    Byte ordering of the internal representation.

  • Ord OsStringDefined in os-string-2.0.7 · System.OsString.Internal.Types

    Byte ordering of the internal representation.

  • Ord PosixCharDefined in os-string-2.0.7 · System.OsString.Internal.Types
  • Ord PosixStringDefined in os-string-2.0.7 · System.OsString.Internal.Types
  • Ord WindowsCharDefined in os-string-2.0.7 · System.OsString.Internal.Types
  • Ord WindowsStringDefined in os-string-2.0.7 · System.OsString.Internal.Types
  • Ord PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Ord PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Ord CardinalityDefined in random-1.2.1.3 · System.Random.GFinite
  • Ord ScientificDefined in scientific-0.3.8.0 · Data.Scientific

    Scientific numbers can be safely compared for ordering. No magnitude 10^e is calculated so there's no risk of a blowup in space or time when comparing scientific numbers coming from untrusted sources.

  • Ord AnnLookupDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord AnnTargetDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord BangDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord BndrVisDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord BodyDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord BytesDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord CallconvDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ClauseDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ConDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord DecDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord DecidedStrictnessDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord DerivClauseDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord DerivStrategyDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord DocLocDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ExpDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord FamilyResultSigDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord FixityDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord FixityDirectionDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ForeignDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord FunDepDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord GuardDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord InfoDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord InjectivityAnnDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord InlineDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord LitDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord LocDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord MatchDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ModNameDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ModuleDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord ModuleInfoDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord NameDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord NameFlavourDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord NameSpaceDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord NamespaceSpecifierDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord OccNameDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord OverlapDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PatDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PatSynArgsDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PatSynDirDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PhasesDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PkgNameDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord PragmaDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord RangeDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord RoleDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord RuleBndrDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord RuleMatchDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord SafetyDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord SourceStrictnessDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord SourceUnpackednessDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord SpecificityDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord StmtDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord TyLitDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord TySynEqnDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord TypeDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord TypeFamilyHeadDefined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord I8Defined in text-2.1.3 · Data.Text.Foreign
  • Ord TextDefined in text-2.1.3 · Data.Text · orphan
  • Ord BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Ord TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Ord ConstructorVariantDefined in th-abstraction-0.7.1.0 · Language.Haskell.TH.Datatype
  • Ord DatatypeVariantDefined in th-abstraction-0.7.1.0 · Language.Haskell.TH.Datatype
  • Ord FieldStrictnessDefined in th-abstraction-0.7.1.0 · Language.Haskell.TH.Datatype
  • Ord StrictnessDefined in th-abstraction-0.7.1.0 · Language.Haskell.TH.Datatype
  • Ord UnpackednessDefined in th-abstraction-0.7.1.0 · Language.Haskell.TH.Datatype
  • Ord DayDefined in time-1.12.2 · Data.Time.Calendar.Days
  • Ord MonthDefined in time-1.12.2 · Data.Time.Calendar.Month
  • Ord QuarterDefined in time-1.12.2 · Data.Time.Calendar.Quarter
  • Ord QuarterOfYearDefined in time-1.12.2 · Data.Time.Calendar.Quarter
  • Ord DayOfWeekDefined in time-1.12.2 · Data.Time.Calendar.Week
  • Ord AbsoluteTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.AbsoluteTime
  • Ord DiffTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.DiffTime
  • Ord NominalDiffTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.NominalDiffTime
  • Ord SystemTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.SystemTime
  • Ord UTCTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.UTCTime
  • Ord UniversalTimeDefined in time-1.12.2 · Data.Time.Clock.Internal.UniversalTime
  • Ord TimeLocaleDefined in time-1.12.2 · Data.Time.Format.Locale
  • Ord LocalTimeDefined in time-1.12.2 · Data.Time.LocalTime.Internal.LocalTime
  • Ord TimeOfDayDefined in time-1.12.2 · Data.Time.LocalTime.Internal.TimeOfDay
  • Ord TimeZoneDefined in time-1.12.2 · Data.Time.LocalTime.Internal.TimeZone
  • Ord UUIDDefined in uuid-types-1.0.6 · Data.UUID.Types.Internal
  • Ord UnpackedUUIDDefined in uuid-types-1.0.6 · Data.UUID.Types.Internal
  • Ord ()Defined in ghc-prim-0.12.0 · GHC.Classes
  • Integral a => Ord (Ratio a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Real
  • Ord (ConstPtr a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.ConstPtr
  • Ord (ForeignPtr a)Defined in ghc-internal-9.1003.0 · GHC.Internal.ForeignPtr
  • Ord (FunPtr a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ptr
  • Ord (Ptr a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ptr
  • Ord (SChar c)Defined in ghc-internal-9.1003.0 · GHC.Internal.TypeLits
  • Ord (SSymbol s)Defined in ghc-internal-9.1003.0 · GHC.Internal.TypeLits
  • Ord (SNat n)Defined in ghc-internal-9.1003.0 · GHC.Internal.TypeNats
  • Ord a => Ord (First a)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord a => Ord (Last a)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord a => Ord (Max a)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord a => Ord (Min a)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord a => Ord (IntMap a)Defined in containers-0.7 · Data.IntMap.Internal
  • Ord a => Ord (Seq a)Defined in containers-0.7 · Data.Sequence.Internal
  • Ord a => Ord (ViewL a)Defined in containers-0.7 · Data.Sequence.Internal
  • Ord a => Ord (ViewR a)Defined in containers-0.7 · Data.Sequence.Internal
  • Ord a => Ord (Intersection a)Defined in containers-0.7 · Data.Set.Internal
  • Ord a => Ord (Set a)Defined in containers-0.7 · Data.Set.Internal
  • Ord a => Ord (Tree a)Defined in containers-0.7 · Data.Tree
  • Ord a => Ord (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Ord a => Ord (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Ord a => Ord (NonEmpty a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Base
  • Ord a => Ord (Identity a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Functor.Identity
  • Ord a => Ord (First a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Monoid
  • Ord a => Ord (Last a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Monoid
  • Ord a => Ord (Down a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Ord
  • Ord a => Ord (Dual a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (Product a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (Sum a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (ZipList a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Functor.ZipList
  • Ord a => Ord (Maybe a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Maybe
  • Ord a => Ord (Hashed a)Defined in hashable-1.4.7.0 · Data.Hashable.Class
  • Ord a => Ord (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array

    Lexicographic ordering. Subject to change between major versions.

  • Ord a => Ord (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray

    Lexicographic ordering. Subject to change between major versions.

  • Ord a => Ord (Stream a)Defined in text-2.1.3 · Data.Text.Internal.Fusion.Types
  • Ord a => Ord (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal
  • Ord a => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Ord a => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Ord a => Ord (a)Defined in ghc-prim-0.12.0 · GHC.Classes
  • Ord a => Ord [a]Defined in ghc-prim-0.12.0 · GHC.Classes
  • Ord flag => Ord (TyVarBndr flag)Defined in template-haskell-2.22.0.0 · Language.Haskell.TH.Syntax
  • Ord g => Ord (StateGen g)Defined in random-1.2.1.3 · System.Random.Internal
  • Ord g => Ord (AtomicGen g)Defined in random-1.2.1.3 · System.Random.Stateful
  • Ord g => Ord (IOGen g)Defined in random-1.2.1.3 · System.Random.Stateful
  • Ord g => Ord (STGen g)Defined in random-1.2.1.3 · System.Random.Stateful
  • Ord g => Ord (TGen g)Defined in random-1.2.1.3 · System.Random.Stateful
  • Ord m => Ord (WrappedMonoid m)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord p => Ord (Par1 p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • (Storable a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • (Ord a, Prim a) => Ord (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray

    Lexicographic ordering. Subject to change between major versions.

  • (Prim a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • (Unbox a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • Ord (Fixed a)Defined in base-4.20.2.0 · Data.Fixed
  • Ord (Proxy s)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Proxy
  • Ord (TypeRep a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Typeable.Internal
  • Ord (U1 p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (V1 p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord a => Ord (Arg a b)Defined in base-4.20.2.0 · Data.Semigroup
  • Ord m => Ord (Over m a)Defined in selective-0.7.0.1 · Control.Selective
  • Ord m => Ord (Under m a)Defined in selective-0.7.0.1 · Control.Selective
  • Ord m => Ord (Over m a)Defined in selective-0.7.0.1 · Control.Selective.Multi
  • Ord m => Ord (Under m a)Defined in selective-0.7.0.1 · Control.Selective.Multi
  • (Ord1 f, Ord a) => Ord (Ap f a)Defined in free-5.2 · Control.Applicative.Free
  • (Ord1 f, Ord a) => Ord (Cofree f a)Defined in free-5.2 · Control.Comonad.Cofree
  • (Ord1 f, Ord a) => Ord (Free f a)Defined in free-5.2 · Control.Monad.Free
  • (Ord1 f, Ord a) => Ord (Free f a)Defined in free-5.2 · Control.Monad.Free.Ap
  • (Ord1 f, Ord a) => Ord (Coyoneda f a)Defined in kan-extensions-5.2.7 · Data.Functor.Coyoneda
  • (Ord1 f, Ord a) => Ord (Yoneda f a)Defined in kan-extensions-5.2.7 · Data.Functor.Yoneda
  • (Ord1 f, Ord a) => Ord (Lift f a)Defined in transformers-0.6.1.1 · Control.Applicative.Lift
  • (Ord1 m, Ord a) => Ord (IterT m a)Defined in free-5.2 · Control.Monad.Trans.Iter
  • (Ord1 m, Ord a) => Ord (MaybeT m a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Maybe
  • (Ord1 w, Ord a) => Ord (CoiterT w a)Defined in free-5.2 · Control.Comonad.Trans.Coiter
  • (Ix i, Ord e) => Ord (Array i e)Defined in ghc-internal-9.1003.0 · GHC.Internal.Arr
  • (Ix ix, Ord e, IArray UArray e) => Ord (UArray ix e)Defined in array-0.5.8.0 · Data.Array.Base
  • (Ord a, Ord b) => Ord (Either a b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Either
  • (Ord a, Ord b) => Ord (a, b)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord e, Ord a) => Ord (Validation e a)Defined in either-5.0.3 · Data.Either.Validation
  • (Ord e, Ord a) => Ord (Validation e a)Defined in selective-0.7.0.1 · Control.Selective
  • (Ord k, Ord v) => Ord (Map k v)Defined in containers-0.7 · Data.Map.Internal
  • (Ord k, Ord v) => Ord (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal

    The ordering is total and consistent with the Eq instance. However, nothing else about the ordering is specified, and it may change from version to version of either this package or of hashable.

  • (GOrd (Rep1 f a), Generic1 f) => Ord (FunctorClassesDefault f a)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Ord (Coercion a b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Coercion
  • Ord (URec Char p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (URec Double p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (URec Float p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (URec Int p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (URec Word p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (URec (Ptr ()) p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (a :~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equality
  • Ord (bi a b) => Ord (Biap bi a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Biap
  • Ord (f a) => Ord (Ap f a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Monoid
  • Ord (f a) => Ord (Alt f a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord (f a) => Ord (WrappedContravariant f a)Defined in invariant-0.6.4 · Data.Functor.Invariant
  • Ord (f a) => Ord (WrappedFunctor f a)Defined in invariant-0.6.4 · Data.Functor.Invariant
  • Ord (f p) => Ord (Rec1 f p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (p (Fix p a) a) => Ord (Fix p a)Defined in bifunctors-5.6.2 · Data.Bifunctor.Fix
  • Ord (p a a) => Ord (Join p a)Defined in bifunctors-5.6.2 · Data.Bifunctor.Join
  • Ord (w (CofreeF f a (CofreeT f w a))) => Ord (CofreeT f w a)Defined in free-5.2 · Control.Comonad.Trans.Cofree
  • Ord a => Ord (Const a b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Functor.Const
  • Ord a => Ord (Constant a b)Defined in transformers-0.6.1.1 · Data.Functor.Constant
  • Ord a => Ord (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord b => Ord (Tagged s b)Defined in tagged-0.8.9 · Data.Tagged
  • (Ord1 f, Ord1 m, Ord a) => Ord (FreeT f m a)Defined in free-5.2 · Control.Monad.Trans.Free
  • (Ord1 f, Ord1 m, Ord a) => Ord (FreeT f m a)Defined in free-5.2 · Control.Monad.Trans.Free.Ap
  • (Ord1 f, Ord a) => Ord (Backwards f a)Defined in transformers-0.6.1.1 · Control.Applicative.Backwards
  • (Ord1 f, Ord a) => Ord (IdentityT f a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Identity
  • (Ord1 f, Ord a) => Ord (Reverse f a)Defined in transformers-0.6.1.1 · Data.Functor.Reverse
  • (Ord1 f, Ord e, Ord a) => Ord (ExceptT e f a)Defined in selective-0.7.0.1 · Control.Selective.Trans.Except
  • (Functor f, Monad m, Ord1 f, Ord1 m, Ord a) => Ord (FT f m a)Defined in free-5.2 · Control.Monad.Trans.Free.Church
  • (Generic1 f, Ord (Rep1 f a)) => Ord (Generically1 f a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • (Ord a, Ord (f b)) => Ord (CofreeF f a b)Defined in free-5.2 · Control.Comonad.Trans.Cofree
  • (Ord a, Ord (f b)) => Ord (FreeF f a b)Defined in free-5.2 · Control.Monad.Trans.Free
  • (Ord a, Ord (f b)) => Ord (FreeF f a b)Defined in free-5.2 · Control.Monad.Trans.Free.Ap
  • (Ord a, Ord b, Ord c) => Ord (a, b, c)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord e, Ord1 m, Ord a) => Ord (ExceptT e m a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Except
  • (Ord w, Ord1 m, Ord a) => Ord (WriterT w m a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Writer.Lazy
  • (Ord w, Ord1 m, Ord a) => Ord (WriterT w m a)Defined in transformers-0.6.1.1 · Control.Monad.Trans.Writer.Strict
  • Ord (a :~~: b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Type.Equality
  • Ord c => Ord (K1 i c p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • (Ord (f a), Ord (g a)) => Ord (Product f g a)Defined in base-4.20.2.0 · Data.Functor.Product
  • (Ord (f a), Ord (g a)) => Ord (Sum f g a)Defined in base-4.20.2.0 · Data.Functor.Sum
  • (Ord (f p), Ord (g p)) => Ord ((:*:) f g p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • (Ord (f p), Ord (g p)) => Ord ((:+:) f g p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)Defined in ghc-prim-0.12.0 · GHC.Classes
  • Ord (f (g a)) => Ord (Compose f g a)Defined in base-4.20.2.0 · Data.Functor.Compose
  • Ord (f (g p)) => Ord ((:.:) f g p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (f a) => Ord (Clown f a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Clown
  • Ord (f p) => Ord (M1 i c f p)Defined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ord (g b) => Ord (Joker g a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Joker
  • Ord (p a b) => Ord (WrappedBifunctor p a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Wrapped
  • Ord (p a b) => Ord (WrappedProfunctor p a b)Defined in invariant-0.6.4 · Data.Functor.Invariant
  • Ord (p b a) => Ord (Flip p a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Flip
  • (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord (f a b), Ord (g a b)) => Ord (Product f g a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Product
  • (Ord (p a b), Ord (q a b)) => Ord (Sum p q a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Sum
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f)Defined in ghc-prim-0.12.0 · GHC.Classes
  • Ord (f (p a b)) => Ord (Tannen f p a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Tannen
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h)Defined in ghc-prim-0.12.0 · GHC.Classes
  • Ord (p (f a) (g b)) => Ord (Biff p f g a b)Defined in bifunctors-5.6.2 · Data.Bifunctor.Biff
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)Defined in ghc-prim-0.12.0 · GHC.Classes
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)Defined in ghc-prim-0.12.0 · GHC.Classes
valueclamp :: Ord a => (a, a) -> a -> a
#
clamp (low, high) a = min high (max a low)

Function for ensuring the value a is within the inclusive bounds given by low and high. If it is, a is returned unchanged. The result is otherwise low if a <= low, or high if high <= a.

When clamp is used at Double and Float, it has NaN propagating semantics in its second argument. That is, clamp (l,h) NaN = NaN, but clamp (NaN, NaN) x = x.

Example1 expression
clamp (0, 10) 22
Example1 expression
clamp ('a', 'm') 'x''m'
valuecomparing :: Ord a => (b -> a) -> b -> b -> Ordering
#
comparing p x y = compare (p x) (p y)

Useful combinator for use in conjunction with the xxxBy family of functions from Data.List, for example:

  ... sortBy (comparing fst) ...
newtypenewtype Down a
#

The Down type allows you to reverse sort order conveniently. A value of type Down a contains a value of type a (represented as Down a).

If a has an Ord instance associated with it then comparing two values thus wrapped will give you the opposite of their normal sort order. This is particularly useful when sorting in generalised list comprehensions, as in: then sortWith by Down x.

Example1 expression
compare True FalseGT
Example1 expression
compare (Down True) (Down False)LT

If a has a Bounded instance then the wrapped instance also respects the reversed ordering by exchanging the values of minBound and maxBound.

Example1 expression
minBound :: Int-9223372036854775808
Example1 expression
minBound :: Down IntDown 9223372036854775807

All other instances of Down a behave as they do for a.

Constructors

Instances48Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
datadata Ordering
#
Instances19Bounded, Enum, Eq, Data, Ord, Read, …