`type 'a t =`

1. `| Nil : unit t`
2. `| Cons : 'a * 'b t -> ('a * 'b) t`

Heterogeneous tuple, used to pass any number of arguments to a function.

`val nil : unit t`

`nil` is `Nil`.

`val cons : 'a -> 'b t -> ('a * 'b) t`

`cons` is `Cons`.

`type 'a obs`

How to observe a `t`.

See `Observable` for more information on what "observe" means in the QCheck.

`val o_nil : unit obs`

`o_nil` is the `obs` equivalent of `nil`.

`val o_cons : 'a Observable.t -> 'b obs -> ('a * 'b) obs`

`o_cons` is the `obs` equivalent of `cons`.

`val observable : 'a obs -> 'a t Observable.t`

`observable obs` returns the underlying observable of `obs`.

`module Infix : sig ... end`

Infix `Tuple` operators for convenience.

`include module type of Infix`
`val (@::) : 'a -> 'b t -> ('a * 'b) t`

Alias for `cons`.

`val (@->) : 'a Observable.t -> 'b obs -> ('a * 'b) obs`

Alias for `o_cons`.