sig
  type t
  val ty : t Type.t
  val name : string
  val descr : Datatype.t Descr.t
  val packed_descr : Structural_descr.pack
  val reprs : Datatype.t list
  val equal : Datatype.t -> Datatype.t -> bool
  val compare : Datatype.t -> Datatype.t -> int
  val hash : Datatype.t -> int
  val pretty_code : Stdlib.Format.formatter -> Datatype.t -> unit
  val internal_pretty_code :
    Type.precedence -> Stdlib.Format.formatter -> Datatype.t -> unit
  val pretty : Stdlib.Format.formatter -> Datatype.t -> unit
  val varname : Datatype.t -> string
  val mem_project : (Project_skeleton.t -> bool) -> Datatype.t -> bool
end