procedure main(args)
every write(!noDups(args))
end
procedure noDups(L)
every put(newL := [], notDup(set(),!L))
return newL
procedure notDup(cache, a)
if not member(cache, a) then {
insert(cache, a)
return a
}