Haskell。必须按照它们遵循的顺序展平列表中的相同元素。

问题描述 投票:1回答:1
如何删除与列表中项目相邻的相同重复项目?

flattlst "aaaasssaaabbbssaaa" --"asabsa"

我试图通过Data.List中的“ nub”函数来做到这一点,>

import Data.List flattlst = nub --flattlst"aaaasssaaabbbssaaa" "asb" -- !!! It is wrong!! "asabsa" -- !!The answer should be like this.

但是那不是我所需要的。 “ Nub”删除所有相同的元素,但是我只需要连续输入那些元素即可。帮助我解决此问题。

如何删除与列表中项目相邻的相同重复项目? flattlst“ aaaasssaaabbbssaaa”-“ asabsa”我试图通过Data.List中的“ nub”函数来做到这一点,导入Data.List ...

haskell haskell-stack template-haskell haskell-platform
1个回答
0
投票
nub仅会产生一个元素,如果它没有首先产生一个等效元素。因此nub确实会发出"asb",因为此后的'a' s,'s' s和'b' s已经发出。

您可以使用的是group :: (Eq a, Foldable f) => f a -> [NonEmpty a]。这将为相等元素的每个子序列生成一个非空列表。例如:

© www.soinside.com 2019 - 2024. All rights reserved.