Scheme函数和列表,乘法,加法

时间:2014-09-08 17:08:57

标签: scheme

我正在尝试在方案中编写2个函数,第一个会将列表中的每个值乘以用户指定的值,第二个函数会将一个数字添加到上一个结果列表中的所有值。 我尝试了类似的东西,但球拍引发了错误。

(define test (list 1 1 2 3 5))
(define funca(*(test)(2)))

1 个答案:

答案 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并添加一个。为了解决您的问题,您只需将上述每个片段放在一个函数中,并在正确的位置传递正确的参数(左侧作为读者的练习)。