Stack.MakeMake(T) constructs a monoid that accumulates elements of type T.t
include Base with type t := TList(T).tval zero : TList(T).tzero an element that is neutral to plus
val plus : TList(T).t -> TList(T).t -> TList(T).tplus x y an associative operation.
val concat : TList(T).t list -> TList(T).tconcat xs reduces xs to using plus
val (@@) : TList(T).t -> TList(T).t -> TList(T).tx @@ y is plus x y