要素をスキップすることなく、すべてのサブリストのリストを返す関数が必要です。サブリスト[1,2,3,4]は[[1,2,3,4]、[1,2,3]など]を返しますが、リストには[1,2,4]は含まないようにしてください。 (私の友人の少しの助けを借りて)解決策が見つかりました与えられたリストのサブリストのリストを作成します。
: 私の現在の "溶液" は、事前に[1,2,4]おかげ
EDITを含んでいます
>sublists :: [Integer] -> [[Integer]]
>sublists [] = [[]]
>sublists (x:xs) = [x:ys | ys <- sublists xs] ++ sublists xs
です
ビット不器用に見えますが、それは
>sublists :: [Integer] -> [[Integer]]
>sublists [] = [[]]
>sublists (x:xs) = subs [] (x:xs) ++ sublists xs
> where
> subs :: [Integer] -> [Integer] -> [[Integer]]
> subs xs [] = [xs]
> subs xs (a:as) = (xs ++ [a]) : (subs (xs ++ [a]) as)
私はそれを自分自身で実装したいと思っています。たとえば、[1,2,3]と指定された場合、tailsは返されません。 – Grapengeter
あなたは自分自身を演習として実装したい場合は、 'Data.List'から[' inits'](https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List.html#v:inits)を探していました。 (元のコメントに 'inits 'の代わりに' tails'を書いてしまいました) – duplode
initsは[1,2,3]が与えられても[2,3]を返しません。 [1,2,3,4] – Grapengeter