List Haskell如何检查并返回一个元组中部分存在于另一个元组中的元素?
我是Haskell编程新手,目前我有一个包含 [“H1”、“B1”]、[“H2”、“B2”]、[“H3”、“B2”] 和另一个列表2[[String]] [“H1”、“B1”、“H5”]、[“H2”、“B2”、“H5”]、[“H2”、“H3”、“B2”]、[“H5”、“B1”、“H4”]] 我想返回一个基于list2的结果,它包含List1中的元素 [“H1”、“B1”、“H5”]、[“H2”、“B2”、“H5”]、[“H2”、“H3”、“B2”]] 有人明白我的意思吗? 我完全不知道如何开始这个问题,谢谢你的帮助 我想用它作为过滤器和我的设计List Haskell如何检查并返回一个元组中部分存在于另一个元组中的元素?,list,haskell,List,Haskell,我是Haskell编程新手,目前我有一个包含 [“H1”、“B1”]、[“H2”、“B2”]、[“H3”、“B2”] 和另一个列表2[[String]] [“H1”、“B1”、“H5”]、[“H2”、“B2”、“H5”]、[“H2”、“H3”、“B2”]、[“H5”、“B1”、“H4”]] 我想返回一个基于list2的结果,它包含List1中的元素 [“H1”、“B1”、“H5”]、[“H2”、“B2”、“H5”]、[“H2”、“H3”、“B2”]] 有人明白我的意思吗? 我完全不知道如何开始这
isInList :: [[String]] -> [[String]] -> Bool
isInList (x:xs) y = filter (any (`elem` x)) y
但这给了我一个错误的答案[[“H1”、“B1”、“H5”]、[“H5”、“B1”、“H4”]]
我哪里做错了?您的示例输出包含
列表2
中的前三个子列表。您的列表1
的长度为3。是否要将List2
截断为List1
的长度?如果是,试试看
list1 = [["H1","B1"],["H2","B2"],["H3","B2"]]
list2 = [["H1","B1","H5"],["H2","B2","H5"],["H2","H3","B2"]]
truncatedList2 = take (length list1) list2
main = print truncatedList2
尝试。您已经尝试了什么?为什么最后一个列表不应该是输出的一部分?对于元组,这些是列表。因为最后一个列表不包含列表1中的任何对,请首先显示您尝试过的内容。现在这看起来像是一个“为我解决家庭作业”的问题。。。