type 'a or_error = ( 'a, string ) Pervasives.result
type 'a iter = ( 'a -> unit ) -> unit
type 'a gen = unit -> 'a option
module type BASIC_SEXP = sig ... end
module type SEXP = sig ... end
module type S0 = sig ... end
module type S = sig ... end