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