矢量添加列表

时间:2010-03-15 15:20:39

标签: lisp scheme

如果我有一个长度为M的N列表,我怎么能写一个漂亮的干净函数来返回长度为M的单个列表,其中每个元素是N个列表中相应元素的总和?

(开始学习口齿不清 - 变得简单!)

3 个答案:

答案 0 :(得分:9)

这是mapapply函数的作业。这是一种方法,由Nathan Sanders建议 EDIT

(define (add-lists . more)
  (apply map + more))

答案 1 :(得分:2)

更像matlab的语法:

(define (piecewise func)
  (lambda more
    (apply map func more)))
(define pw piecewise)

((pw +) '(1 2 3 4 5) '(6 7 8 9 0))
((pw -) '(1 2 3 4 5) '(6 7 8 9 0))
((pw *) '(1 2 3 4 5) '(6 7 8 9 0))
((pw /) '(1 2 3 4 5) '(6 7 8 9 0.1))

输出:

(7 9 11 13 5)
(-5 -5 -5 -5 5)
(6 14 24 36 0)
(1/6 2/7 3/8 4/9 50.0)

答案 2 :(得分:2)

这只适用于麻省理工学院的计划。

 (map + '(1 2 3) '(4 5 6) '(7 8 9))
;Value 28: (12 15 18)