#!/usr/bin/ocaml module type A = sig type signature val f : signature -> int end module F (T : A) = struct let g n = T.f n end module X = struct type a = A of int let f' n = A n include F(struct let f = f' end) end