Module Genprintval

module type OBJ = sig ... end
module type EVALPATH = sig ... end
type ('a, 'b) gen_printer =
| Zero of 'b
| Succ of 'a -> ('a'b) gen_printer
module type S = sig ... end
module Make : functor (O : OBJ) -> functor (_ : EVALPATH with type valu = O.t) -> S with type t = O.t