/ / removendo elementos duplicados de uma lista com listas aninhadas dentro do lisp - list, lisp, common-lisp, remoção duplicada, listas aninhadas

Removendo elementos duplicados de uma lista com listas aninhadas dentro de lisp-list, lisp, common-lisp, remoção de duplicatas, listas aninhadas

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 № 1

Dar :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))