Lisp の関数 remove-duplicates は、(abcd) のような単純なリストに対してのみ機能します。私の質問は、ネストされたリストを含むリストから重複した要素を削除する方法です。たとえば
次のようにネストされたリストを持つリストがあります: ( (0 1) (0 2) (0 1) (0 3) )
上記のリスト内で2回繰り返される(0 1)リストの1つを削除して、次を取得します。
( (0 1) (0 2) (0 3) )
Lisp の関数 remove-duplicates は、(abcd) のような単純なリストに対してのみ機能します。私の質問は、ネストされたリストを含むリストから重複した要素を削除する方法です。たとえば
次のようにネストされたリストを持つリストがあります: ( (0 1) (0 2) (0 1) (0 3) )
上記のリスト内で2回繰り返される(0 1)リストの1つを削除して、次を取得します。
( (0 1) (0 2) (0 3) )
に与える:test #'equal
とremove-duplicates
、それはあなたが望むことをします。
CLHS: Satisfying a Two-Argument Testで見られるように、指定されていない場合の:test
デフォルトは#'eql
であり、2 つのリスト likeは、同じリスト( )(0 1)
でないeql
限りそうではありません。eq
CL-USER> (remove-duplicates '((0 1) (0 2) (0 1) (0 3)) :test #'equal)
((0 2) (0 1) (0 3))