代码应该获取一个Int并将其与列出的元组中的第一个Int进行比较(其他Int无关紧要),因此Int x应该与(( p,q,r):ys)中的p进行比较,只要x == p,就会返回一个列表(p,q,r),(p,q,r)。代码会编译,但在测试时会溢出,我不确定是语法问题还是没有补偿完整的列表。
listTuples :: Int -> [(Int, Int, Int)] -> [(Int,Int,Int)]
listTuples x [] = []
listTuples x ((p,q,r) : ys)
| x == p = listTuples x ((p,q,r) : ys)
| otherwise = []测试:
listTuples 3 [(3,4,5),(4,3,5),(3,6,7)]返回:
[(3,4,5),(3,6,7)]发布于 2019-03-14 21:32:11
您可以使用filter完成此操作
listTuples' :: Int -> [(Int, Int, Int)] -> [(Int, Int, Int)]
listTuples' x ls = filter (\(p, _, _) -> p == x) lshttps://stackoverflow.com/questions/55163795
复制相似问题