こんにちは、私は Haskell を初めて使用します。許可されていない座標系 (CS1) のリスト (つまり、座標のリストのリスト) とすべての座標 (CL) のリストを入力できるコードを作成しようとしています。この関数の目的は、CL 内のこれらの座標を少なくとも 1 つ含む CS1 内のすべての座標系を破棄し、最終的に CS1 からの座標系 (CS2) のサブセットを小さくすることです。(紛らわしい?ごめんなさい)
私はナッツをクラックするのにかなり近いと思います(トレイルエラーの段階にあるので本当にわかりませんが)、listelem2を実行するとlistelemに文句を言う非網羅的な問題があります。誰かが私が欠けているものを見ることができますか? あなたが与えることができるどんな助けにも感謝します! :D
listelem0 :: (Eq a) => [a] -> a -> [a]
listelem0 [] y = []
listelem0 (x:xs) y
| x == y = []
| x /= y = [x] ++ listelem0 xs y
listelem :: (Eq a) => [a] -> a -> [a]
listelem (x:xs) y
| length (listelem0 (x:xs) y) < length (x:xs) = []
| otherwise = listelem0 (x:xs) y
listelem1 :: (Eq a) => [[a]] -> a -> [[a]]
listelem1 [] y = []
listelem1 (x:xs) y = [listelem x y] ++ listelem1 xs y
listelem2 :: (Eq a) => [[a]] -> [a] -> [[a]]
listelem2 [] [] = [[]]
listelem2 (x:xs) [] = (x:xs)
listelem2 (x:xs) (y:ys) = listelem2 (listelem1 (x:xs) y) ys