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