【发布时间】:2015-10-20 13:02:46
【问题描述】:
好的,我对 Haskell 非常陌生,因为我今天早上开始学习,我的任务是获取 2 个元组列表 [("s",1)..],如果它们都相同,则返回 true否则元素返回 false。 到目前为止,我正在考虑从列表 1 中获取第一个元素并将其与列表 2 中的所有元素进行比较,然后对所有元素执行此操作,然后返回 true 或 false。我不知道如何跟踪所有布尔值,如果有错误就很容易
|head list1 =/ elementList2 = False
但我只是让自己感到困惑,到目前为止,我已经定义了 List
listCheck :: List->List -> Bool
listCheck (h1:t1) (h1:t1)
| h1 == [] = True
| fst (head h1) /= fst (head h2) = False
| snd (head h1) /= snd (head h2) = False
| otherwise = listCheck (t1) (t2)
有什么建议吗? 列表可以按任何顺序排列,因此 [("a",1),("b",1)] 和 [("b",1),("a",1)] 是相等的。列表的顺序无法更改。
【问题讨论】:
-
我的想法是你通过列表检查
-
你能解释一下'如果他们比较相同的元素则返回真否则返回假'的意思吗?你的意思是如果它们包含完全相同的元素,它应该返回true,而不管顺序如何?还是相同顺序的相同元素?或者如果列表之间至少有一个共同元素?请准确。
-
听起来你想要
listCheck = (==)或listCheck = Data.List.isPrefixOf
标签: list haskell functional-programming tuples