如何分隔在haskell中重复的数字列表?
示例:
分开[1,1,1,2,3,3,4] - > [[1,1,1,1],[2],[3,3],[4]]
答案 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