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