的所有連續的子列表我有點新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],[],我試圖繼續,作爲xs傳遞[2,3,4],直到列表被耗盡。
有人可以給我一些指針嗎?或者我以完全錯誤的方式思考?
感謝您的回答。我知道我想用尾巴作爲?但我並沒有真正得到'concat。地圖後綴。前綴「部分。我不完全確定如何正確編寫它。 – rlhh 2013-03-14 04:14:46
@ user1043625我不確定你的意思。這就是你如何寫它。除非你想知道如何編寫列表函數。否則,它只是一個功能組合。 – sabauma 2013-03-14 04:24:52
我相信我誤解了你答案的某些部分,但我相信我明白了。我實際上是以不同的方式來做這件事。 'listSuffix(xs)++ listPrefix(init xs)'。現在我需要找到一種方法來刪除空列表的重複。 – rlhh 2013-03-14 04:29:07