sig   val list : ('a -> 'a -> bool) -> 'a list -> 'a list   val array : ('a -> 'a -> bool) -> 'a array -> unit   val merge : ('a -> 'a -> bool) -> 'a list -> 'a list -> 'a list end