Добавить список произвольных списков в поэлементной схеме - PullRequest
0 голосов
/ 03 октября 2018

В схеме мы можем добавить два списка 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)), пожалуйста, помогите мне заполнить бланк (или предложить альтернативу).

1 Ответ

0 голосов
/ 11 октября 2018

Есть ли у 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.

...