Portability | semi-portable (overlapping instances, etc) |
---|---|

Stability | experimental |

Maintainer | wren@community.haskell.org |

- class PartialOrd a where
- comparingPO :: PartialOrd b => (a -> b) -> a -> a -> Maybe Ordering

# Partial Ordering

class PartialOrd a whereSource

This class defines a partially ordered type. The method names
were chosen so as not to conflict with `Ord`

and `Eq`

. We use
`Maybe`

instead of defining new types `PartialOrdering`

and
`FuzzyBool`

because this way should make the class easier to
use.

Minimum complete definition: `cmp`

cmp :: a -> a -> Maybe OrderingSource

like `compare`

gt :: a -> a -> Maybe BoolSource

like (`>`

)

ge :: a -> a -> Maybe BoolSource

like (`>=`

)

eq :: a -> a -> Maybe BoolSource

like (`==`

)

ne :: a -> a -> Maybe BoolSource

like (`/=`

)

le :: a -> a -> Maybe BoolSource

like (`<=`

)

lt :: a -> a -> Maybe BoolSource

like (`<`

)

maxPO :: a -> a -> Maybe aSource

like `max`

. The default instance returns the left argument
when they're equal.

minPO :: a -> a -> Maybe aSource

like `min`

. The default instance returns the left argument
when they're equal.

# Functions

comparingPO :: PartialOrd b => (a -> b) -> a -> a -> Maybe OrderingSource

Like `Data.Ord.comparing`

. Helpful in conjunction with the
`xxxBy`

family of functions from Data.List