球拍。将数字添加到列表中

时间:2014-11-27 04:33:03

标签: scheme racket

我有一个清单

(define resultlist2 '(0))

和一个数字。

我想将该数字添加到resultlist2元素,并使用set来不断更新我的列表

(define (adding x y) (+ x y))

(set! resultlist2 (adding resultlist2 1))

但我在这里收到错误。

我希望我的结果为

; before i add a number to list
(display resultlist2)
> 0

; after i added number to list
(display resultlist2)
> 1

有人有想法吗?我想我必须" map"将数字添加到列表中的函数..可能不是...... 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

问题是,您的adding过程会添加两个数字,但您想为列表中的每个数字添加一个值。如果列表只有一个元素,那就简单如下:

(define resultlist2 '(0))
(set! resultlist2 (list (adding (car resultlist2) 1)))
resultlist2
=> '(1)

但是如果列表中有多个元素并且您想为其所有元素添加相同的值,那么使用map是个好主意:

(define resultlist2 '(0 1 2))
(set! resultlist2 
      (map (lambda (e) (adding e 1))
           resultlist2))    
resultlist2
=> '(1 2 3)