functor TREE() = struct datatype 'a Tree = Tree of 'a * 'a Tree list end;