list - 列表的 Haskell 连续子列表

标签 list haskell

嗨,我有这个小函数可以找到集合的幂集,但我需要所有连续的子列表。 [1,2,3] -> [[],[1],[2],[3],[1,2],[2,3],[1,2,3]]而不是 [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]
有没有办法修复这个功能来做我想做的事?

sublists :: [a] -> [[a]]
sublists [] = [[]]
sublists (x:xs) = sublists xs ++ map (x:) (sublists xs)  

最佳答案

它不是很优雅,但您可以使用 divvy来自 Data.List.Split :

xs = [1,2,3]
[] : concat [ divvy n 1 xs | n <- [1..length xs] ]
-- [[],[1],[2],[3],[1,2],[2,3],[1,2,3]]

关于list - 列表的 Haskell 连续子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49151573/

相关文章:

python - 如何从列表创建字典

python - 转换为以行作为列表的普通数据框。将行拆分为列

python - 在列表的同一子列表中搜索多个元素

python - 如何在Python 3中查找嵌套列表中的不同值并找出其差异?

haskell - 使用 Template Haskell 在编译时评估函数

python datetime.timedelta 放入列表中

haskell - 为什么这个类型类只能用 "-XNoMonomorphismRestriction"编译?

Haskell:不会使用自定义数据类型进行编译

haskell - 在haskell中增加环境的应用程序

haskell - 如何在 [maybe string] 上使用 fmap 所以添加的字符串在 Just 之前?