Array#uniqとUnix系OSのuniqの挙動が違う件

rubyのuniqがun*xのそれと動きが違う件 - 計算機と戯れる日々

un*xのコマンドのuniq

~$ echo -e "1\n2\n2\n3\n2\n2\n"|uniq
1
2
3
2


一方rubyは


>> [1, 2, 2, 3, 2].uniq
=> [1, 2, 3]

FAQな気がする。

追記

Unix系OSのuniqコマンドは「連続した重複行を取り除く」仕様だ。man uniqしてみたけど、GNU版uniqにも「連続しない重複行を取り除く」オプションはないなぁ…意外だった。
どういう場合に役立つと言われてもよくわからない。Array#uniqをuniqコマンドの仕様に揃えなかったのは、作者がその仕様を気に食わなかったからだろうね。

追記

http://znz.s1.xrea.com/t/?date=20080421#p02

なるほど。そう言われてみればString#squeezeがあった。確かにuniq相当である。Array#squeezeを追加するのもいいけど、Array#uniqにオプションを追加するほうが好みだな。連想できるから。両方あるといいね。