lex*_*449 1 haskell functional-programming tuples function filter
我想在Haskell中使用标准的Prelude(无递归,无列表理解)来过滤元组列表,然后输出整数列表。它应检查包含整数的三元组列表,例如,
[(1,2,3), (2,3,7), (4,5,20)]
Run Code Online (Sandbox Code Playgroud)
并查看元素#1和#2的总和是否等于元素#3。如果是这样,请将元素#3放入列表中,然后输出列表。这是我正在寻找的输出:
>sumOfElements [(1,2,3), (2,3,7), (4,5,9)]
[3,9]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
sumsOfElements :: [(Int, Int, Int)] -> [Int]
sumsOfElements list = filter (\(a,b,c) -> a+b==c) list
Run Code Online (Sandbox Code Playgroud)
这种工作,但它输出满足条件的元组列表。
>sumOfElements [(1,2,3), (2,3,7), (4,5,9)]
[(1,2,3), (4,5,9)]
Run Code Online (Sandbox Code Playgroud)
我不确定如何c从元组中提取该元素并将其附加到输出的新列表中。
将其视为管道:首先找到正确的元素,然后将它们转换为所需的形状:
sumOfElements = map (\(_,_,c) -> c) . filter (\(a,b,c) -> a+b==c)
Run Code Online (Sandbox Code Playgroud)
并且相信懒惰和优化(特别是文件夹/构建融合)将使其表现出色。