O Set é uma estrutura de dados que guarda coleções de itens distintos e ordernados. No primeiro exemplo é possível ver estas carcterísticas na prática. Apesar de receber três vezes a variável 100 o Set armazena somente uma. Além disto ao imprimir o Set é possível ver que ele ordenou os elementos, colocando o 10 a frente do 100.
Set set;
;
set = new Set(Types::Integer);
set.add(1);
set.add(100);
set.add(100);
set.add(100);
set.add(10);
print set.elements(); //3
print set.toString(); //{1, 10, 100}
pause;
Outra característica do Set é a possibilidade de excluir elementos da lista. No exemplo abaixo o elemento Types::String é excluido do Set
Set set;
;
set = new Set(Types::Enum);
set.add(Types::String);
set.add(Types::Integer);
set.add(Types::Date);
print set.in(Types::String); //true
set.remove(Types::String);
print set.in(Types::String); //false
pause;
Por último é possível realizar operações de conjunto entre dois Sets. Isto é bem interessante, acho que não existe em .Net, por exemplo.
Operações de conjunto da coleção Set:

Vamos ver alguns exemplos de como isto funciona na prática
Set produtos1 = new Set(Types::String);
Set produtos2 = new Set(Types::String);
;
produtos1.add("Pão");
produtos1.add("Leite");
produtos1.add("Manteiga");
produtos2.add("Arroz");
produtos2.add("Feijão");
produtos2.add("Carne");
produtos2.add("Pão");
print Set::union(produtos1, produtos2).toString();
//Resultado: {"Arroz", "Carne", "Feijão", "Leite", "Manteiga", "Pão"}
print Set::intersection(produtos1, produtos2).toString();
//Resultado: {"Pão"}
print Set::difference(produtos1, produtos2).toString();
//Resultado: {"Leite", "Manteiga"}
pause;