2012-03-08 5 views
9

の値が含まれているかどうかを確認するためにはHaskellを使用することができますそうどのように私はリストが、私はHaskellでは、グラフのためのいくつかの機能を書いています、と私は、このような</p> <pre><code>[1,4, 5, 7] </code></pre>として整数、 <p>のリストが含まれているかどうかを確認したいタプル

(1,5) 

イムのような私はタプルとして表されているエッジを作る頂点、リストにはAが含まれているため、リストやタプルを取り、この場合にはtrueを返します機能を取るしようとしています1と5私が午前主な問題は、イムは本当にHaskellでリストを検索する方法がわかりません。そのタイプのリストを取る関数[A]とタイプaの値であり、[A]が含まれているかどうかに応じて、ブールを返しますか?

elem 1 [1,3,4] 

がTrue与える:

+9

[関数は、\ [a \]型の値とa型の値のリストを取り、Boolを返しますか?](http://www.haskell.org/hoogle/?q =%5BA%5D + - %3E + A + - %3E +ブール値) –

+1

その - >が、これは愚かな質問が、何であれば、ポスト内のリンク:) –

答えて

22

値がリストにあるかどうかをチェックする機能があり、

elem :: Eq a => a -> [a] -> Bool 

は、あなたの関数を簡単に定義されています。

containsEdge :: [Int] -> (Int,Int) -> Bool 
xs `containsEdge` (a,b) = (a `elem` xs) && (b `elem` xs) 
+0

あなたはそれをスポッティングための 'containsEdge' – pat

+7

おかげでクローズバックティックが欠落しています。必要に応じて、このようなタイプミスを自分で修正することができます。自分のタイプミスが固定されている合理的な人の心ないので、恐れることはありません。 –

5

elemは機能があることありません。この機能は、多くの場合、バッククォートで囲んで中置演算子として使用されているものの:一方

1 `elem` [1,4,5,7] 

を、大きなセットのために、それは非常に良いアイデア(O(n)の複雑さ)ではありません、あなたがすべきあなたの要素が整数の場合はSetを使うか、リストの代わりにIntSetを使ってください。それを使用して

+0

ごめんなさいために貼り付けたテキストの両方にハスケルの範囲で大きなセットとなるだろうか?私はその言語を初めて使う人です。 –

+1

私は確認することはできませんので、私は、ベンチマークませんでしたが、数十以上のものは、おそらくそれはリストの劣る代替を使用する理由ように設定を構築し、使用するために非常に簡単です、特に以来、 'Set'を保証するのでしょうか? – Jedai

関連する問題

 関連する問題