Функция Flatten Nests в Лиспе - нужна помощь в понимании

Я пытался найти способ уплотнения вложенных списков в числа, которые возвращаются в исходный список, но у меня возникли некоторые проблемы.

Я смотрел на функцию сглаживания (которая так широко доступна), которая приведена здесь:

<code>(defun flatten (l)
  (cond
    ((null l) nil)
    ((atom l) (list l))
    (t (loop for a in l appending (flatten a)))))
</code>

Я понимаю, что этот пример - рекурсия, но как он работает? Он проверяет, является ли элемент нулевым или атомным, но что он делает, если элемент попадает в эти условия?

Ответы на вопрос(3)

Ваш ответ на вопрос