Lispers aren't afraid of C macros, and that leads to remarkable loop constructs that handle circular lists: https://github.com/emacs-mirror/emacs/blob/master/src/lisp.h#L4605-L4628