嗨,我有这个小功能,找到集合的powerset但我需要所有连续的子列表.[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)
Run Code Online (Sandbox Code Playgroud)
这不完全优雅,但你可以使用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]]
Run Code Online (Sandbox Code Playgroud)