compare
eq: <a>(lhs: a, rhs: a) => bool
The call eq(x, y) returns true if, and only if, x and y are
considered to be equal w.r.t. the order on the underlying type.
neq: <a>(lhs: a, rhs: a) => bool
The call neq(x, y) returns true if, and only if, x and y are
not considered to be equal w.r.t. the order on the underlying type.
gt: <a>(lhs: a, rhs: a) => bool
The call gt(x, y) returns true if, and only if, x is considered
to be greater than y w.r.t. the order on the underlying type.
lt: <a>(lhs: a, rhs: a) => bool
The call lt(x, y) returns true if, and only if, x is considered
to be less than y w.r.t. the order on the underlying type.
ge: <a>(lhs: a, rhs: a) => bool
The call ge(x, y) returns true if, and only if, x is considered
to be greater or equal than y w.r.t. the order on the underlying
type.
le: <a>(lhs: a, rhs: a) => bool
The call le(x, y) returns true if, and only if, x is considered
to be less or equal than y w.r.t. the order on the underlying type.