我有一个清单
(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"将数字添加到列表中的函数..可能不是...... 谢谢你的帮助!
答案 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)