A função remove-duplicates no lisp funciona apenas para listas simples como (a b c d). Minha pergunta é como eu posso remover elementos duplicados de uma lista com listas aninhadas dentro dela. Então por exemplo
Eu tenho uma lista com listas aninhadas da seguinte maneira: ((0 1) (0 2) (0 1) (0 3))
e quero remover uma das listas (0 1) repetidas duas vezes dentro da lista acima para obter:
((0 1) (0 2) (0 3))
Respostas:
6 para resposta № 1Dar :test #"equal
para remove-duplicates
, e fará o que você quiser.
Como vemos em CLHS: satisfazendo um teste de dois argumentos, :test
o padrão é #"eql
quando não fornecido, e duas listas como (0 1)
não são eql
a menos que sejam a mesma lista (eq
).
CL-USER> (remove-duplicates "((0 1) (0 2) (0 1) (0 3)) :test #"equal)
((0 2) (0 1) (0 3))