当前位置:  开发笔记 > 编程语言 > 正文

从一个元组中的两个列表中总结相应的对 - 在Haskell中

如何解决《从一个元组中的两个列表中总结相应的对-在Haskell中》经验,为你挑选了1个好方法。

我有一个包含两个数字列表的元组 - ([1,2,3,4],[5,6,7,8])

我需要将每个列表中相应的数字对相加.即(1 + 5),(2 + 6)等.输出一个列表,即[6,8,10,12].它也应该适用于列表中的任何数量的元素(2个列表,5个,2个列表,6个等).

我一直在尝试使用"map sum.transpose"的函数,但似乎无法使类型正确(因为它在一个元组内).我在这里发现了一段代码,它适用于列表列表,但不知道如何为列表元组做同样的事情(可能吗?).当我尝试更改"a"的类型或使用Int I编译为类型不匹配错误时.

tupSums :: Num a => [[a]] -> [a]
tupSums = map sum . transpose

我对使用Haskell相当新,所以我不太了解我得到的错误,如果这个问题看起来很愚蠢,那就很抱歉.



1> Lily Ballard..:

这是一个很好的候选者zipWith,它采用两个列表,并使用特定的运算符组合列表中的相应元素.以下应该有效:

tupSums :: Num a => ([a],[a]) -> [a]
tupSums = uncurry $ zipWith (+)

zipWith (+)求值为一个带有两个参数的函数,每个参数都是列表,并返回一对成对的列表.uncurry采用两个args的函数并将其转换为一个需要单个元组的函数.因此,uncurry $ zipWith (+)求值为一个函数,它接受一个列表元组并返回一个带有成对和的列表.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有