deriving-compat-0.6.2: Backports of GHC deriving extensions
Copyright(C) 2015-2017 Ryan Scott
LicenseBSD-style (see the file LICENSE)
MaintainerRyan Scott
PortabilityTemplate Haskell
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Ord.Deriving.Internal

Description

Exports functions to mechanically derive OrdClass, Ord1, and Ord2 instances.

Note: this is an internal module, and as such, the API presented here is not guaranteed to be stable, even between minor releases of this library.

Synopsis

OrdClass

deriveOrd :: Name -> Q [Dec] Source #

Generates an OrdClass instance declaration for the given data type or data family instance.

makeCompare :: Name -> Q Exp Source #

Generates a lambda expression which behaves like compare (without requiring an OrdClass instance).

makeLE :: Name -> Q Exp Source #

Generates a lambda expression which behaves like (<=) (without requiring an OrdClass instance).

makeLT :: Name -> Q Exp Source #

Generates a lambda expression which behaves like (<) (without requiring an OrdClass instance).

makeGT :: Name -> Q Exp Source #

Generates a lambda expression which behaves like (>) (without requiring an OrdClass instance).

makeGE :: Name -> Q Exp Source #

Generates a lambda expression which behaves like (>=) (without requiring an OrdClass instance).

makeMax :: Name -> Q Exp Source #

Generates a lambda expression which behaves like max (without requiring an OrdClass instance).

makeMin :: Name -> Q Exp Source #

Generates a lambda expression which behaves like min (without requiring an OrdClass instance).

Ord1

deriveOrd1 :: Name -> Q [Dec] Source #

Generates an Ord1 instance declaration for the given data type or data family instance.

makeLiftCompare :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftCompare (without requiring an Ord1 instance).

This function is not available with transformers-0.4.

makeCompare1 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like compare1 (without requiring an Ord1 instance).

Ord2

deriveOrd2 :: Name -> Q [Dec] Source #

Generates an Ord2 instance declaration for the given data type or data family instance.

This function is not available with transformers-0.4.

makeLiftCompare2 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftCompare2 (without requiring an Ord2 instance).

This function is not available with transformers-0.4.

makeCompare2 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like compare2 (without requiring an Ord2 instance).

This function is not available with transformers-0.4.