///|
pub(all) enum Ordering {
  Less
  Greater
  Eq
} derive(Show, Eq)

///|
pub(open) trait Order: Compare {
  order(Self, Self) -> Ordering = _
}

///|
impl Order with order(a, b) {
  Ordering::int_to_ordering(a.compare(b))
}

///|
pub fn Ordering::int_to_ordering(i : Int) -> Ordering {
  if i > 0 {
    Greater
  } else if i < 0 {
    Less
  } else {
    Eq
  }
}