使用列表理解的列表的子列表

时间:2011-03-01 00:10:16

标签: haskell functional-programming list-comprehension

那很简单。我想使用列表推导生成列表的所有子列表。

ie:getSublist [1,2,3]是[[1],[2],[3],[1,2],[1,3],[2,3],[1,2] 3]

由于

1 个答案:

答案 0 :(得分:7)

这已经实现为Data.List.subsequences,但如果您想自己定义(出于学习目的),您可以这样做:

你不能仅使用列表推导来实现它,但是通过一些递归它看起来像这样:

sublists [] = [[]]
sublists (x:xs) = [x:sublist | sublist <- sublists xs] ++ sublists xs

读取:空列表的唯一子列表是空列表。 x:xs的子列表(即包含头部x和尾部xs的列表)是xs的所有子列表以及{xs的每个子列表1}} x加在他们面前。