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:
(defun flatten (l)
(cond
((null l) nil)
((atom l) (list l))
(t (loop for a in l appending (flatten a)))))
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?