私は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として渡すことでそれを続けようとしています。
誰かが私にいくつかのポインタを与えることができますか?それとも私は完全に間違った方法で考えていますか?