Acalmar Nests Função em Lisp - precisa de ajuda para entender
Eu tenho tentado encontrar uma maneira de condensar listas aninhadas em números que voltam à lista original, mas estou tendo alguns problemas.
Eu estive olhando para a função flatten (que é tão amplamente disponível) que é dada aqui:
(defun flatten (l)
(cond
((null l) nil)
((atom l) (list l))
(t (loop for a in l appending (flatten a)))))
Eu entendo este exemplo é recursão, mas como funciona? Ele verifica se o elemento é nulo ou um átomo, mas o que acontece se o elemento cair nessas condições?