Functional programming 球拍复约化函数

Functional programming 球拍复约化函数,functional-programming,scheme,lisp,racket,Functional Programming,Scheme,Lisp,Racket,我试图以一种比它通常的用途更复杂的方式使用reduce函数。我甚至不确定这是否可行,但我想做的是: 给定一个列表(1 2 3)和两个常量,让它们分别为9和13,我尝试使用reduce来结束: (+1(*9(+2(*9(+3(*9 13‘‘‘‘)) 我尝试了一种方法,将13添加到列表的后面,因此我使用了(1 2 3 13)然后尝试使用Lambda和reduce进行一些映射,但我无法得到正确的答案 我会发布我尝试过的代码,但我的互联网坏了,我正在手机上输入,很抱歉,我无法显示我尝试过做什么,但目标是

我试图以一种比它通常的用途更复杂的方式使用reduce函数。我甚至不确定这是否可行,但我想做的是:

给定一个列表
(1 2 3)
和两个常量,让它们分别为
9
13
,我尝试使用reduce来结束:

(+1(*9(+2(*9(+3(*9 13‘‘‘‘))

我尝试了一种方法,将13添加到列表的后面,因此我使用了
(1 2 3 13)
然后尝试使用Lambda和reduce进行一些映射,但我无法得到正确的答案


我会发布我尝试过的代码,但我的互联网坏了,我正在手机上输入,很抱歉,我无法显示我尝试过做什么,但目标是使用reduce实现上述表达式的形式。建议的操作确实可以作为
reduce
(又称为reduce)):

关于常量,
13
在最里面的表达式中只使用一次,因此它非常适合用作初始值<代码>9用于将累积值相乘。当递归开始展开时,从右到左使用输入列表,此时我们将当前元素添加到累积结果中。

要在开发过程中找到正确的形式,您可以尝试类似
(lambda(x acc)`(+,x(*9,acc))
(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))
=> 9739

(reduce (lambda (e acc) (+ e (* 9 acc)))
        13
        '(1 2 3))
=> 9739