HaskellのData.List#nubと、 RubyのArray#uniqは、どちらもリスト/配列内の重複要素を取り除いた新しい配列を返す関数です。 どうもHaskellのnubはRubyに比べてだいぶ遅いなあと感じます。 リストと配列のデータ構造の違いに起因するのだろうと想像はできますが、いまいち腑に落ちない*1のでまずは計測を行いました。 まずは、重複の全くない長いリスト/配列についてです。 具体的には、1から100,000までの数値を突っ込んだリスト/配列の重複を取り除きます。 nub.hs module Main where import Data.List main = print $ length $ nub $ [1..100000] uniq.rb puts (1..100000).to_a.uniq.length 計測結果 $ time ./nub 100000 re

