在Scheme中,我试图遍历一个列表,从列表的一部分添加每个元素。
例如,如果我有((1 2 5)(1 2)(1 5)(1)(2 5)(2)(5)())列表,我试图添加第一个部分(1 2 5)然后是第二部分(1 2),依此类推,以查看每个元素是否与特定数字相加。
希望这是有道理的,尽力解释这一点。
如果有人可以帮助我解决这个问题,我会非常感激。
答案 0 :(得分:0)
要添加(小)列表的编号,您可以使用apply
:
> (apply + '(1 2 3))
6
与
相同> (+ 1 2 3)
6
要将其应用于子列表列表,请使用map
:
(define (f lst)
(map (lambda (sublst) (apply + sublst))
lst))
> (f '((1 2 5) (1 2) (1 5) (1) (2 5) (2) (5) ()))
'(8 3 6 1 7 2 5 0)
对于较大的列表,您可能希望将apply
替换为foldl
或等效。