想知道如何在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