Допустим, у меня есть список:
((1 2 3) (8 4 7) (41 79 30) (0 8 5))
Я хочу сделать это:
(1+8+41+0 2+4+79+8 3+7+30+5) = (50 93 45)
Я нашел уродливое решение:
(defun nested+ (lst)
(let ((acc nil))
(dotimes (i (length (first lst)))
(push (apply #'+ (mapcar #'(lambda (a) (nth i a)) lst)) acc))
(reverse acc)))
Кажется, это работает для моих целей, но я думаю, что это медленно и без лишних слов.Как правильно?