【发布时间】:2013-03-14 01:44:49
【问题描述】:
我对 Haskell 有点陌生,我正在尝试生成列表的所有连续子列表。
我目前有以下:
listSublists :: [a] -> [[a]]
listSublists [] = [[]]
listSublists xs = [xs] ++ listSublists (init xs)
我知道上面的函数会生成删除最后一个元素的子列表,但我不知道如何完成我的伪代码。
我的伪代码基本上是,
取整个完整列表,去掉尾部。将 (x:xs) 的 xs 传入 列表子列表
例如,xs = [1,2,3] [xs] ++ listSublists (init xs) 将生成 [1,2,3,4], [1,2,3], [1,2], [1], [] 我正在尝试继续将 [2,3,4] 作为 xs 传入,直到列表用完。
谁能给我一些建议?还是我的想法完全错误?
【问题讨论】: