# The `ORDKEY`

signature

## Overview

The `ORDKEY`

signature defines a key type which is totally
ordered. Note that anything ascribing to `ORDKEY`

implicitly
ascribes to `EQKEY`

as well.

## Interface

```
type t
val equal : t * t → bool
val compare : t * t → order
val toString : t → string
```

## Types

`type `**t**

- The abstract key type.

## Values

`val `**equal** :
t * t → bool

- Determine whether or not the argument pair is considered equal.
This operation is reflexive, symmetric, and transitive.
`val `**compare** :
t * t → order

- Return one of
`LESS`

, `EQUAL`

, or
`GREATER`

as appropriate for the argument pair. This
operation is transitive. The comparison must be consistent,
that is `compare (x, y) = EQUAL`

if and only if
`equal (x, y)`

, and `compare (x, y) = LESS`

if and only if `compare (y, x) = GREATER`

.
`val `**toString** :
t → string

- Return a string representation.