functor (T : sig type t end) -> sig type t = T.t val append : t -> t -> t end