(方案)使用map函数,如何找到列表的子列表的总和?

时间:2013-03-05 03:11:07

标签: map scheme add sublist

所以,我正在尝试添加列表的子列表。就像,如果我有这样的事情:

(add-pair '((1 4) (2 1)))

我想让它归还:

(5 3)

这是我到目前为止所做的:

(define pair-additions
  (lambda (ls)
    (map
      (lambda (n)
        (+ (car n) (cdr n)))ls)))

现在,它给我一个错误,说输入不是数字。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你几乎得到了它!这是问题:

(+ (car n) (cdr n))

要检索列表的第二个元素,您必须使用car的{​​{1}},而不仅仅是cdr。为此更改以上行:

cdr

或者为此,这是前一行的简短形式:

(+ (car n) (car (cdr n)))

或者为此,这更易于阅读(如果您的Scheme解释器支持):

(+ (car n) (cadr n))

以上所有内容都是等效的。