struct

  type t = float
  let compare (a: float) (b: float) = compare a b
  let to_string i = string_of_float i
  let of_string s = try Some (float_of_string s) with _ -> None
end