我正在尝试在方案中编写2个函数,第一个会将列表中的每个值乘以用户指定的值,第二个函数会将一个数字添加到上一个结果列表中的所有值。 我尝试了类似的东西,但球拍引发了错误。
(define test (list 1 1 2 3 5))
(define funca(*(test)(2)))
答案 0 :(得分:3)
在Scheme中,我们使用map
高阶程序在元素列表上应用函数 - 请记住,你不能乘以列表,我们是什么可以做多个每个元素。例如,要将每个元素乘以2,请执行以下操作:
(define test (list 1 1 2 3 5))
(map (lambda (element) (* 2 element))
test)
=> '(2 2 4 6 10)
注意我们如何将lambda
作为参数传递给map
:这是一个将应用于输入列表中的每个元素的函数,返回包含结果的新列表。同样,如果我们需要在列表中的元素中添加一个:
(map (lambda (element) (+ 1 element))
test)
=> '(2 2 3 4 6)
以上示例是硬编码乘以2并添加一个。为了解决您的问题,您只需将上述每个片段放在一个函数中,并在正确的位置传递正确的参数(左侧作为读者的练习)。