1 (defun has-loop? (x) 2 (let ((pairs-table (make-hash-table :test #'eq))) 3 (labels ( 4 (traverse-list (x) 5 (cond 6 ((null x) nil) 7 ((gethash x pairs-table) t) 8 (t 9 (setf (gethash x pairs-table) 1) 10 (traverse-list (cdr x)))))) 11 (traverse-list x))))