Funkcja Flatten Nests w Lisp - potrzebujesz pomocy w zrozumieniu

Próbowałem znaleźć sposób na zagęszczenie zagnieżdżonych list w liczby, które wracają na pierwotną listę, ale mam pewne problemy.

Patrzyłem na funkcję spłaszczania (która jest tak powszechnie dostępna) podaną tutaj:

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

Rozumiem, że ten przykład to rekursja, ale jak to działa? Sprawdza, czy element jest zerowy lub atom, ale co robi, jeśli element wpada w te warunki?

questionAnswers(3)

yourAnswerToTheQuestion