(defun remove-duplicados (lista) (cond ((null lista) nil) ((member (first lista) (rest lista)) (remove-duplicados (rest lista))) (t (cons (first lista) (remove-duplicados (rest lista))))))
Esta função não mantém a anterior ordenação da lista. Se pretendermos preservar a ordem original, temos de testar se um elemento já existe na lista que estamos a construir e não na que estamos a analisar.
(defun remove-duplicados2 (lista) (labels ((remove-aux (lista lista-aux) (cond ((null lista) nil) ((member (first lista) lista-aux) (remove-aux (rest lista) lista-aux)) (t (cons (first lista) (remove-aux (rest lista) (cons (first lista) lista-aux))))))) (remove-aux lista nil)))> (remove-duplicados2 '(1 2 3 3 2 4 5 4 1)) (1 2 3 4 5)
Esta função já existe em Lisp e denomina-se remove-duplicates.