Flatten Nests-Funktion in Lisp - Benötigen Sie Hilfe beim Verständnis

Ich habe versucht, verschachtelte Listen zu Zahlen zusammenzufassen, die auf die ursprüngliche Liste zurückgehen, aber ich habe einige Probleme.

Ich habe mir die Abflachungsfunktion angeschaut (die so weit verbreitet ist), die hier angegeben ist:

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

Ich verstehe, dass dieses Beispiel eine Rekursion ist, aber wie funktioniert es? Es prüft, ob das Element null oder ein Atom ist, aber was tut es, wenn das Element unter diese Bedingungen fällt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage