首页 > 解决方案 > 有什么方法可以在 Scheme/Racket 中映射具有多个参数的函数?

问题描述

我目前正在学习 Racket/Scheme 的入门课程,目前正在学习 map、apply 和 fold。在大多数情况下,我一直假设 map 只能在接受单个参数的 lambda 上工作。但是,对于某些问题,我会发现在某种程度上解决这个问题非常有用 - 例如,拥有一个可以映射到列表的函数,同时还带有一个累加器,该累加器为每个递归函数调用独立更新。虽然我不能比这更具体,因为害怕违反荣誉守则,如果你打算使用地图,有没有办法解决无法给每个递归调用一个累加器的问题?

标签: schemeracket

解决方案


map takes as many lists as you want:

(map + '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> (7 7 7)

fold has an accumulator:

(foldl (lambda (a b c acc) (+ a b c acc)) 1 '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> 22

推荐阅读