functor (T : sig val name : string end->
  sig type t val ty : Type.Abstract.t Type.ty end