sig type t val append : Semigroup.S.t -> Semigroup.S.t -> Semigroup.S.t end