Here's my 2 cents
(defun remove_doubles (lst)
(if lst
(cons (car lst) (remove_doubles (vl-remove (car lst) lst)))
)
)
Obviously, this recursive form seems to run faster :
Benchmarking .................Elapsed milliseconds / relative speed for 16384 iteration(s):
(REMOVE_DOUBLES MYLST).......................1094 / 5.13 <fastest>
(REMOVEDUPLICATES-MP1 MYLST).................1625 / 3.45
(REMOVEDUPLICATES-MP2 MYLST).................2421 / 2.32
(REMOVE_DUP-SE7EN3 MYLST)....................2859 / 1.96
(REMOVE_DUBLICATES2-ASMI MYLST)..............2875 / 1.95
(REMOVE_DUP-SE7EN MYLST).....................2891 / 1.94
(REMOVE-DUPLICATES-TONY MYLST)...............3203 / 1.75
(REMOVE_DUBLICATES-ASMI MYLST)...............3844 / 1.46
(REMOVEDUPLICATES-DM MYLST)..................4813 / 1.17
(APPLY (QUOTE APPEND) (REMOVE-DUP-SE...).....5610 / 1.00 <slowest>