scheme - 在 Scheme 中 foldr 和 apply 有什么区别?
问题描述
编程语言:Scheme/DrRacket
foldr
我认为和之间的用法没有区别apply
谁能解释它们有何不同?据我所知,你可以用 foldr 做同样的事情,你可以用 apply。谢谢!
解决方案
它们非常不同,尽管在某些情况下它们可能是等价的。
(apply func '(1 2 3))
相当于
(func 1 2 3)
(foldr func 0 '(1 2 3))
相当于
(func (func (func 3 0) 2) 1)
如果函数是关联的和可交换的,并且它允许您提供可变数量的参数,结果将是相同的。例如
(apply + '(1 2 3)) == (foldr + 0 '(1 2 3))
但是foldr
可以用来组合只带两个参数的函数的结果,或者使用更灵活的方式来组合结果。
有关更多信息foldr
,请参阅DrRacket/Scheme 中的 Map、Filter、Foldr
推荐阅读
- docker - docker-compose 如何添加多个命令?
- firebase - Firebase Analytics:如何为 Firebase Analytics 获取和集成 UA 类型测量 ID 而不是 G 类型测量 ID?
- amazon-web-services - 新修改的文件,在 CMD 中创建并列出大文件
- javascript - 样式化的组件嵌套规则不起作用
- c++ - 基类虚拟析构函数——五法则?
- regex - Vim 正则表达式查找匹配后行上的替换选项卡
- javascript - 如何在openlayer中使用幻想世界的高质量jpg改变世界观?
- c - 使用 perl 更新 C 文件中的宏
- php - 获取用户和组 apache 运行为
- google-api - 无法访问 webmasters.dat:没有这样的文件或目录