0

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

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

我希望它返回这个:

(5 3)

这是我到目前为止所拥有的:

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

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

4

1 回答 1

0

你几乎明白了!这是问题所在:

(+ (car n) (cdr n))

要检索列表的第二个元素,您必须使用carcdr,而不仅仅是cdr。为此更改上述行:

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

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

(+ (car n) (cadr n))

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

(+ (first n) (second n))

以上都是等价的。

于 2013-03-05T03:36:46.307 回答