sig   type -'a t   val equal : 'a QCheck.Observable.t -> 'a -> 'a -> bool   val hash : 'a QCheck.Observable.t -> 'a -> int   val print : 'a QCheck.Observable.t -> 'a QCheck.Print.t   val unit : unit QCheck.Observable.t   val bool : bool QCheck.Observable.t   val int : int QCheck.Observable.t   val float : float QCheck.Observable.t   val string : string QCheck.Observable.t   val char : char QCheck.Observable.t   val make :     ?eq:('a -> 'a -> bool) ->     ?hash:('a -> int) -> 'a QCheck.Print.t -> 'a QCheck.Observable.t   val map : ('a -> 'b) -> 'b QCheck.Observable.t -> 'a QCheck.Observable.t   val option : 'a QCheck.Observable.t -> 'a option QCheck.Observable.t   val list : 'a QCheck.Observable.t -> 'a list QCheck.Observable.t   val array : 'a QCheck.Observable.t -> 'a array QCheck.Observable.t   val pair :     'a QCheck.Observable.t ->     'b QCheck.Observable.t -> ('a * 'b) QCheck.Observable.t   val triple :     'a QCheck.Observable.t ->     'b QCheck.Observable.t ->     'c QCheck.Observable.t -> ('a * 'b * 'c) QCheck.Observable.t   val quad :     'a QCheck.Observable.t ->     'b QCheck.Observable.t ->     'c QCheck.Observable.t ->     'd QCheck.Observable.t -> ('a * 'b * 'c * 'd) QCheck.Observable.t end