If one wants to include a functor signature in another... module type EQ = sig type t val eq : t * t -> bool end module type EQ_PROD = functor (X : EQ) (Y : EQ) -> sig type t = X.t * Y.t val eq : t * t -> bool end module type ORD = sig include EQ val lt : t * t -> bool end module type LT_PROD = functor (X : EQ) (Y : EQ) -> sig include EQ_PROD (*What do I say here?*) end ​... How does one do that? Is there a syntax for this sort of thing?​ -- Shayne Fletcher