unique な list を作る

なぜか標準で付いてない。

reduce 使うと楽。いきなり先頭要素がくると悲しいから頭に nil を付ける。

(reduce (lambda (a b)
          (if (memq b a) a (cons b a)))
        (cons nil '(a b c d a e)))
=> (e d c b a)

始めて reduce 使った。ruby の inject は使ってたのに。

追記

って思ったら remove-duplicate とかありやがんの。名前わかりずらい。

(remove-duplicates '(a b c d a e))
=> (b c d a e)