Haskell连续的列表子列表

Lac*_*sam 4 haskell list

嗨,我有这个小功能,找到集合的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)

Mic*_*ohl 6

这不完全优雅,但你可以使用divvyData.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)