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

atk*_*tks 5 haskell functional-programming list-comprehension

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

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

谢谢

sep*_*p2k 7

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

你不能只使用列表推导,但有一些递归,它看起来像这样:

sublists [] = [[]]
sublists (x:xs) = [x:sublist | sublist <- sublists xs] ++ sublists xs
Run Code Online (Sandbox Code Playgroud)

读:空列表的唯一子列表是空列表.的子列表x:xs(即,与头的列表x和尾xs)是所有的子列表的xs以及每个子列表的xsx预置到它们.

  • 我喜欢`sublists = filterM $ const [False,True]` (4认同)