如何分离haskell中重复的数字列表?

时间:2013-12-01 17:56:50

标签: haskell

如何分隔在haskell中重复的数字列表?

示例:

分开[1,1,1,2,3,3,4] - > [[1,1,1,1],[2],[3,3],[4]]

3 个答案:

答案 0 :(得分:7)

您正在寻找Data.List的{​​{3}}功能。

答案 1 :(得分:1)

答案是groupBy (==)

忽略这些词,Stackoverflow要求我输入更多的单词

答案 2 :(得分:0)

我尽量不回答这个问题,而是回答如何回答这个问题。我希望这有所帮助,但不是太多。 (编辑:我认为这是一个家庭作业;你可以告诉我你是否想要另一个答案。)

首先尝试定义函数的类型。

separate :: ...

考虑角落案例,例如空列表和包含一个元素的列表。

separate [] = ...
separate [x] = ...

然后,尝试递归地定义该函数(就其本身而言)。

separate (x:xs) = <an expression containing separate, x, and xs>

根据您的实施细节,separate [3,2,3,1]的结果可能是[[1],[2],[3,3]][[3],[2],[3],[1]](如果您使用group,则不应该这样做),或{ {1}}。您可能需要向要求您编写该功能的任何人澄清这一点。

http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-List.html

如果您使用的是GHCi,则可以使用[[3,3],[2],[1]]导入:m +module。与GHCi的示例会话可能如下所示:

module