我对 Haskell 有点陌生,我正在尝试生成列表的所有连续子列表。
我目前有以下内容:
listSublists :: [a] -> [[a]]
listSublists [] = [[]]
listSublists xs = [xs] ++ listSublists (init xs)
我知道上面的函数会生成删除最后一个元素的子列表,但我不知道如何完成我的伪代码。
我的伪代码基本上是,
获取整个完整列表,删除尾部。将 (x:xs) 的 xs 传递到 listSublists
例如,xs = [1,2,3] [xs] ++ listSublists (init xs) 将生成 [1,2,3,4], [1,2,3], [1,2], [1 ], [] 并且我正在尝试将 [2,3,4] 作为 xs 传递,直到列表用完为止。
有人可以给我一些指示吗?还是我的想法完全错误?