(defvar *result*)
(setq *result* 0)
(defun sum-list (lst)
(if (eq (car lst) nil)
*result*
(progn
(setq *result* (+ *result* (car lst)))
(sum-list (cdr lst)))))
(sum-list '(1 2 3 4 5)) => 15
переписал, что-не доходит с labels. Никак не могу понять как она создаёт место в памяти и суммирует туда
(defun labels-sum-list (lst n)
(labels ((temp (lst)
(if (eq (car lst) nil)
n
(progn
(setq n (+ n (car lst)))))))
(temp (cdr lst))))
(labels-sum-list '(1 2 3 4 5) 0) => 2
Кто-то может подправить код, растолковать работу labels.