# Pastebin uiURjUBy (* mods.ml *) module type FooType = sig type t type e val make : e -> t val to_string : t -> string end ;; module Foo : FooType = struct type e = int type t = SomeThing of (e * e) let make i = SomeThing (i, i) let to_string (SomeThing (i,j)) = Printf.sprintf "(%d,%d)" i j end