在列表方案中添加元素

时间:2016-04-10 03:44:51

标签: scheme iteration

在Scheme中,我试图遍历一个列表,从列表的一部分添加每个元素。

例如,如果我有((1 2 5)(1 2)(1 5)(1)(2 5)(2)(5)())列表,我试图添加第一个部分(1 2 5)然后是第二部分(1 2),依此类推,以查看每个元素是否与特定数字相加。

希望这是有道理的,尽力解释这一点。

如果有人可以帮助我解决这个问题,我会非常感激。

1 个答案:

答案 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或等效。