在Scheme中,我们可以使用l1,l2
添加两个列表(map + l1 l2)
。现在假设我们有一个n个列表,每个列表的长度为m。例如,考虑(define q '((0 1 0) (1 0 0) (0 0 1)))
。使用apply
和map
应该是一个衬板,以元素方式添加此列表的元素,并获得(1,1,1)
。我认为应该看起来像这样:
(map + (apply __ q))
请帮助我填写空白(或建议替代方法)。
答案 0 :(得分:1)
Racket是否有一个与call-arguments-limit
通话有关的apply
?
通常情况就是这样。可以通过这种策略来规避这一点:
(define q '((0 1 0) (1 0 0) (0 0 1)))
(define (add l1 l2) (map + l1 l2)) ; adds two lists of any length element wise
(foldr add '(0 0 0) q)
; reduce over list of list q by element-wise addition of the inner lists
起始值为'(0 0 0)
,q
的内部列表将按元素添加/累积。