list - 如何将函数应用于列表的两个元素 - Haskell
问题描述
如何将函数应用于列表的两个元素。例如:
给定列表[red,star,blue,oval,orange,hexagon]
,我想将函数应用于每一对functionName(red,star)
functionName(blue,oval)
functionName(orange,hexagon)
我猜我将不得不使用递归。
解决方案
是的,方法是定义一个递归函数 - 如果输入列表的项目数不均匀,您需要考虑(以及我们不知道的)应该发生什么?当然,您想如何收集该函数的结果?
假设您只是忽略不均匀列表中的最后一个元素,并且您希望将结果收集到另一个列表中:
applyPairwise :: (a -> a -> b) -> [a] -> [b]
applyPairwise f (a1 : a2 : rest) = f a1 a2 : applyPairwise f rest
applyPairwise _ _ = []
例子:
> applyPairwise (+) [1..5]
[3,7]
推荐阅读
- excel - Range.Find 和 With 冻结 Excel
- android - 如何一次发送非常重要数量的推送通知(Android)
- c# - 即使在获得应用程序权限后,“DownloadFile”也无法在 Android(版本 10)中运行
- java - 用户在订单中的relashship
- html - 如何拥有大于“h1”的标题?
- python - 有没有一种在 Python 中快速查找匹配列表的方法?
- css - Less CSS 无法解析 Webpack 中的字体 URL
- mysql - laravel、ubuntu 和 localhost 数据泄露
- html - 我正在用 HTML 制作一个应用程序,我需要制作一个应用程序图标。如何实现图标?
- javascript - 2分钟倒计时的格式化输出