# The HASHKEY signature

## Overview

The HASHKEY signature defines a hashable key type which is totally ordered. Note that anything ascribing to HASHKEY implicitly ascribes to both ORDKEY and EQKEY as well.

## Interface

type t

val equal : t * t → bool
val compare : t * t → order
val hash : t → int
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 hash : t → int
Hash the argument into an integer.
val toString : t → string
Return a string representation.