我正在为Haskell中的图形编写一些函数,我想检查是否有整数列表,例如
[1,4, 5, 7]
包含构成边的顶点,我将其表示为元组,就像这样
(1,5)
我试图采取一个获取列表和元组的函数,在这种情况下将返回true,因为列表包含1和5.我遇到的主要问题是我真的不知道如何搜索列表哈斯克尔 . 它们是一个函数,它接受类型[a]的列表和类型a的值,并返回一个Bool,具体取决于[a]是否包含?
elem函数做到了:
elem 1 [1,3,4]
会给予真实 . 虽然这个函数通常用反引号作为中缀运算符:
1 `elem` [1,4,5,7]
另一方面,对于大集合,这不是一个非常好的想法(O(n)复杂性),你应该使用Set(如果你的元素是整数,甚至是IntSet)而不是列表 .
有一个函数来检查值是否在列表中,
elem :: Eq a => a -> [a] -> Bool
使用它,您的功能很容易定义 .
containsEdge :: [Int] -> (Int,Int) -> Bool xs `containsEdge` (a,b) = (a `elem` xs) && (b `elem` xs)
2 回答
elem函数做到了:
会给予真实 . 虽然这个函数通常用反引号作为中缀运算符:
另一方面,对于大集合,这不是一个非常好的想法(O(n)复杂性),你应该使用Set(如果你的元素是整数,甚至是IntSet)而不是列表 .
有一个函数来检查值是否在列表中,
使用它,您的功能很容易定义 .