sig
  val eq_by : ('a -> 'b) -> 'a BatOrd.eq
  val comp_by : ('a -> 'b) -> 'a BatOrd.comp
  val ord_by : ('a -> 'b) -> 'a BatOrd.ord
end