functor (A : S) (B : S) -> sig type t = A.t * B.t val syntax : Syntax.t val of_json : json -> t val to_json : t -> json end