リストのリスト内の特定の要素の出現を削除するこの関数を持っています。リストのリスト内の指定された要素を削除します。
remove :: Eq a => a -> [[a]] -> [[a]]
remove y [] = error "Can't remove an element from an empty list"
remove y xs = map (filter(/=y)) xs
どのように私は
が、私はの線に沿って何かを推測あなた
リストのリスト内の特定の要素の出現を削除するこの関数を持っています。リストのリスト内の指定された要素を削除します。
remove :: Eq a => a -> [[a]] -> [[a]]
remove y [] = error "Can't remove an element from an empty list"
remove y xs = map (filter(/=y)) xs
どのように私は
が、私はの線に沿って何かを推測あなた
、結果リストにfilter (/= xs) l
を追加:入れ子内包して、フィルターを除去
remove y xs = [filter (/= y) l | l <- xs]
または、。 xss
における各x
xs
では、各xs
に対して 、y
からそれは違う場合にのみx
を保つ:
remove y xss = [ [x| x <- xs, x /= y] | xs <- xss]
あなただけの練習をしている場合、それはOKですが、map
とバージョンがずっといいです:)
'y []'をエラーとするのはなぜですか? 'remove y [[]]'と 'remove y [[y + 1]]'はエラーではありませんか? – dave4420
ありがとうございました。私はそれらのエラーを追加しますありがとうありがとう:) – Moe
@Mike:あなたはそれらをエラーにするべきではありません。空のリストから 'y'を削除すると、空のリストのままです。この場合、関数は合計でなければなりません。エラーは使用するのが難しくなります。 –