Aplanar la función de nidos en Lisp - necesita ayuda para entender

He estado tratando de encontrar una manera de condensar las listas anidadas en números que se remontan a la lista original, pero tengo algunos problemas.

He estado viendo la función de aplanar (que está tan disponible) que se da aquí:

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

Entiendo que este ejemplo es una recursión, pero ¿cómo funciona? Verifica si el elemento es nulo o un átomo, pero ¿qué hace si el elemento cae en estas condiciones?

Respuestas a la pregunta(3)

Su respuesta a la pregunta