编程语言:Scheme/DrRacket
我认为foldrapply之间的用法没有区别
有谁能解释一下他们有什么不同吗据我所知,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))

但是可以使用cc来组合只接受两个参数的函数的结果,或者使用更灵活的方法组合结果。
有关foldr的更多信息,请参见Map, Filter, Foldr in DrRacket/Scheme

关于scheme - foldr和Scheme中的apply有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58293215/

10-11 21:50