List 声明函数

List 声明函数,list,function,haskell,List,Function,Haskell,我对haskell编程非常陌生,有时会遇到很多困难。我在这里给出的任务是,一个有一个数字列表,然后与另一个数字列表进行比较,并返回三个数字作为反馈,根据这些数字可以过滤对其他数字的解释。 例如 [4,9],[7,9],[10,18],[2,9]是我的清单 它现在应该有两个单独的列表[4,9]和[7,9],它应该给出反馈(1,1,0) 第一个函数应该检查两个列表是否有相同的值,如果有,那么它应该返回值2,如果只有一个值,那么它应该返回1,没有值,那么它返回0 我试着用elem方法来做这件事,但没能

我对haskell编程非常陌生,有时会遇到很多困难。我在这里给出的任务是,一个有一个数字列表,然后与另一个数字列表进行比较,并返回三个数字作为反馈,根据这些数字可以过滤对其他数字的解释。 例如

[4,9],[7,9],[10,18],[2,9]是我的清单 它现在应该有两个单独的列表[4,9]和[7,9],它应该给出反馈(1,1,0)

第一个函数应该检查两个列表是否有相同的值,如果有,那么它应该返回值2,如果只有一个值,那么它应该返回1,没有值,那么它返回0 我试着用
elem
方法来做这件事,但没能成功。所以答案必须是1,因为两个列表中都有9个

第二个函数检查最小值。它只能从第二个元素与第一个元素进行比较。从上述[4,9]和[7,9]的同一示例中,它首先找出[7,9]中的最低值7,然后检查[4,9]中任何低于7的值,然后返回反馈1,否则返回0

第三个函数与第二个函数相同,只是它检查最大值 如。[3,13],[10,9],[5,7]我们取列表的前两个元素 [3,13]和[10,9],现在我们检查[10,9]中的最大值,即10,并检查[3,13]中的值,这里的答案必须是1,因为13大于10,否则为0

请帮助声明这些函数
非常感谢

您的问题有点混乱,没有看到任何示例代码。我想我理解您的第一个功能需要如何工作:

看起来您使用的是一个列表列表,[[Int]],但所有列表都只有两项。使用一对[(Int,Int)]

然后可以使用嵌套的if语句编写第一个函数:

firstTest(a1,b2)(a2,b2)=如果a1==a2&&b1==b2,那么2个else如果a1==a2 | | b1==b2,那么1个else 0

如果它不能是一对,而且必须是一个列表列表,那么将问题具体化并使用Data.Set将两个列表转换为集合可能会更容易。比较两个集合要比比较两个列表和数据有效得多。集合为我们提供了有用的
isSubsetOf
函数。您可以使用
fromList
功能将列表转换为集合

import qualified Data.Set as S
firstTest' :: S.Set Int -> S.Set Int -> Int
firstTest' sas sbs = if sas == sbs then 2 else if S.isSubsetOf sas sbs then 1 else 0

比较列表中相邻的项目有点困难。看看我对这个问题的回答:

你真的不太清楚你想要完成什么。从你所说的来看,似乎你至少尝试过一些事情。你能把它贴出来,并试着把你的问题说得更具体些吗?我知道你说过你试过的东西不管用,但这不是stackoverflow的重点吗?