(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))