2つのリストを入力し、これらの2つのリストに共通の要素が含まれているかどうかを知らせる多相関数を記述したいと思います。この関数を書くでの私の試みは、次のとおりです。オーバーラップ関数を書く
overlaps :: (Eq a) => [a] -> [a] -> Bool
overlaps x:xs y:ys
| x `is_element_of` ys = True
| otherwise = False
どこ
is_element_of :: (Eq a) => a -> [a] -> Bool
is_element_of e list = case list of
[] -> False
x: xs -> e == x || e `is_element_of` xs
しかし、これは動作していない...それは二つのリストに対してパターンマッチすることは可能ですか?これはこの関数を書くための可能な方法ですか?
関数の引数でパターンマッチがすべて括弧内になければならないため、パターンマッチは機能しません。また、このように2番目のリストでパターンマッチングを行うと、おそらく望ましくない最初の要素を捨ててしまいます。 – jPlatte
'' 'は重複していますxs = any(' elem' xs) '' ' –
リストはオーダーされていますか?そのため、パフォーマンスを向上させることができます。 –