sig type 'a t val gen : (?size:int -> Random.State.t -> 'a) -> ?size:int -> Random.State.t -> 'a t val to_string : ('a -> string) -> 'a t -> string val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int end