sig
  type 'a t = 'a
  val to_string : ('-> 'b) -> '-> 'b
  val compare : ('-> '-> 'c) -> '-> '-> 'c
end