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