我有点新手使用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,直到列表用尽。
有人可以给我一些指针吗?还是我想法完全错误了?
concat . map suffixes . prefixes
这部分。我不确定如何正确地编写它。 - rlhhlistSuffix(xs) ++ listPrefix(init xs)
。现在我需要找到一种方法来删除空列表的重复项。 - rlhh