Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用haskell检查列表是否包含元组中的值_Haskell - Fatal编程技术网

如何使用haskell检查列表是否包含元组中的值

如何使用haskell检查列表是否包含元组中的值,haskell,Haskell,我正在用Haskell为图编写一些函数,我想检查是否有整数列表,例如 [1,4, 5, 7] 包含构成边的顶点,我将其表示为元组,如下所示 (1,5) 我试图获取一个函数,该函数获取列表和元组,在本例中返回true,因为列表包含1和5。我遇到的主要问题是,我真的不知道如何在Haskell中搜索列表。它们是一个函数,它接受[a]类型的列表和a类型的值,并根据[a]是否包含a返回布尔值 elem函数的作用是: elem 1 [1,3,4] 我会给你答案的。尽管此函数通常通过在其周围加上反勾号而

我正在用Haskell为图编写一些函数,我想检查是否有整数列表,例如

[1,4, 5, 7]
包含构成边的顶点,我将其表示为元组,如下所示

(1,5)

我试图获取一个函数,该函数获取列表和元组,在本例中返回true,因为列表包含1和5。我遇到的主要问题是,我真的不知道如何在Haskell中搜索列表。它们是一个函数,它接受[a]类型的列表和a类型的值,并根据[a]是否包含a返回布尔值

elem函数的作用是:

elem 1 [1,3,4]
我会给你答案的。尽管此函数通常通过在其周围加上反勾号而用作中缀运算符:

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

另一方面,对于大型集合,这不是一个很好的主意(O(n)复杂度),您应该使用Set(如果元素是整数,甚至是IntSet)而不是list。

有一个函数可以检查值是否在列表中

elem :: Eq a => a -> [a] -> Bool
使用它,您的函数很容易定义

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

他们的->在那里,在帖子和粘贴的链接文本中:)过滤(=(1,5))[(a,b)怎么样|a你错过了containsEdge上的右上角勾号,谢谢你发现了它。如果你愿意,你可以自己更正这些打字错误。没有一个通情达理的人会介意他们的打字错误被纠正,所以不要害怕。如果这是一个愚蠢的问题,我很抱歉,但是在Haskell的范围内,什么会构成一个大集合?我对这门语言是新手。我没有“t基准测试,所以我不能确定,但是超过十的任何东西都可能保证有一个
集合
,特别是因为构建和使用集合非常容易,所以为什么要使用较差的列表替代方案呢?