読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

Data.List.(\\)

(\\) という演算子 *1 でリストの差を取れるのだけど、こいつは最初の出現しか削除してくれない。というのを知らなくて、バグった。

Prelude> import Data.List
Prelude Data.List> [1, 2, 2, 3, 3, 1] \\ [1, 2, 3]
[2,3,1]

複数引くとその個数だけ消える。

Prelude Data.List> [1, 2, 2, 3, 3, 1] \\ [1, 2, 2, 3]
[3,1]

全部消したければ filter で。

Prelude Data.List> filter (`notElem` nub [1, 2, 2, 3]) [1, 2, 2, 3, 3, 1]
[]

*1:バックスラッシュなんだけどね・・・