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?