那很简单。我想使用列表推导生成列表的所有子列表。
ie:getSublist [1,2,3]是[[1],[2],[3],[1,2],[1,3],[2,3],[1,2] 3]
由于
答案 0 :(得分:7)
这已经实现为Data.List.subsequences
,但如果您想自己定义(出于学习目的),您可以这样做:
你不能仅使用列表推导来实现它,但是通过一些递归它看起来像这样:
sublists [] = [[]]
sublists (x:xs) = [x:sublist | sublist <- sublists xs] ++ sublists xs
读取:空列表的唯一子列表是空列表。 x:xs
的子列表(即包含头部x
和尾部xs
的列表)是xs
的所有子列表以及{xs
的每个子列表1}} x
加在他们面前。