Příště prosím zmínit makro LOOP z cl-lib. Elisp je známý svou malou sadou iteračních nástrojů, emulace common lispu je v takovou chvíli nutnost.
Dále prosím, nikdy v elispu nepoužívejte rekurzi když to není nezbytně nutné. Volání funkcí je v elispu relativně drahé, takže je lepší použít standardní formou iterace.
příklady, které jsou v dokumentaci k funkci cl-loop jdou podle mě přepsat lépe bez použití cl-lib
https://www.gnu.org/software/emacs/manual/html_node/cl/Loop-Examples.html#Loop-Examples
hned ten první
(cl-loop for buf in (buffer-list)
collect (buffer-file-name buf))
bych přepsal na (mapcar 'buffer-file-name (buffer-list))
ah se divam, ze je to zmineno tady https://www.root.cz/clanky/upravy-emacsu-a-tvorba-novych-modulu-s-vyuzitim-emacs-lispu/#k04
Pro gll - to makro je hodne dobre, napriklad umi http://cl-cookbook.sourceforge.net/loop.html
Jestli si dobre pamatuju, zminuje ho i Paul Graham v On Lisp (doporucuju!, akorat asi neni k dispozici HTML verze, takze nemuzu odkazovat)