Функция Flatten Nests в Лиспе - нужна помощь в понимании
Я пытался найти способ уплотнения вложенных списков в числа, которые возвращаются в исходный список, но у меня возникли некоторые проблемы.
Я смотрел на функцию сглаживания (которая так широко доступна), которая приведена здесь:
<code>(defun flatten (l) (cond ((null l) nil) ((atom l) (list l)) (t (loop for a in l appending (flatten a))))) </code>
Я понимаю, что этот пример - рекурсия, но как он работает? Он проверяет, является ли элемент нулевым или атомным, но что он делает, если элемент попадает в эти условия?