(Scheme)使用map函数,如何查找列表的子列表之和?

(Scheme)使用map函数,如何查找列表的子列表之和?,map,scheme,add,sublist,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))) 现在,它告诉我一个错误,输入不是数字。有人能帮我吗?你差点就成功了!问题是: (+ (car n) (cdr n)) 要检

所以,我试图将列表的子列表相加。比如,如果我有这样的东西:

(add-pair '((1 4) (2 1)))
我想让它退回这个:

(5 3)
这就是我到目前为止所做的:

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

现在,它告诉我一个错误,输入不是数字。有人能帮我吗?

你差点就成功了!问题是:

(+ (car n) (cdr n))
要检索列表的第二个元素,您必须使用
cdr
car
,而不仅仅是
cdr
。为此更改上面的行:

(+ (car n) (car (cdr n)))
或者,这是前一行的一个简短形式:

(+ (car n) (cadr n))
或者更容易阅读(如果您的方案解释器支持):


所有这些都是等效的。

酷。我很接近。谢谢你的帮助!注意:您也可以在此处使用
apply
(map(lambda(x)(apply+x))”((14)(21));=>(5.3)
(+ (first n) (second n))