重複する要素を取り除く
Data.List.nub :: Eq a => [a] -> [a]
は今まで見た要素とすべて比較するのでΟ(n^2)の時間計算量がかかり、10要素以下でもない限り実用的とはいえない。
witherable
パッケージの
ordNub
を使えば、内部で
Data.Set
を使うのでΟ(n log n)に抑えられる。
Data.Container.ListUtils
にはリスト限定のnubOrdもあり、こちらは無限リストにも使える一品。