编程语言: Scheme/DrRacket
我认为foldr和apply在用法上没有区别。
有谁能解释他们的不同之处吗?据我所知,你可以和申请一样。谢谢!
发布于 2019-10-08 20:06:25
它们是非常不同的,尽管在某些情况下它们可能是等价的。
(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的详细信息,请参阅Map, Filter, Foldr in DrRacket/Scheme。
https://stackoverflow.com/questions/58293215
复制相似问题