functor (X : Named_intf.S2->
  sig
    val typename_of_t : 'a typename -> 'b typename -> ('a, 'b) X.t typename
  end