想知道如何在Seq a
刪除重複元素的序列
我得到一個可以做實現nub
:
nubSeq :: Seq a -> Seq a
nubSeq = fromList . nub . toList
只是想知道有沒有不轉換成列表,以什麼標準請致電nub :: [a]->[a]
?
發生在我的實現,對小塊顯然爲主,是:
nubSeq :: (Eq a) => Seq a -> Seq a
nubSeq = Data.Sequence.foldrWithIndex
(\_ x a -> case x `Data.Sequence.elemIndexR` a of
Just _ -> a
Nothing -> a |> x) Data.Sequence.empty
但一定是有什麼更優雅?
謝謝。
你不喜歡你的'nubSeq'對我來說似乎很好。如果你擔心性能,我會建議使用['criterion'](https://hackage.haskell.org/package/criterion)進行基準測試,如果你真的想徹底 - '--dump-simpl',輸出的兩個版本並進行比較。 – epsilonhalbe