Blob
1 (defun good-count-pairs (x)2 (let ((pairs-table (make-hash-table :test #'eq)))3 (labels (4 (traverse-count (x)5 (cond6 ((not (consp x)) 0)7 ((gethash x pairs-table) 0)8 (t9 (setf (gethash x pairs-table) 1)10 (+ (traverse-count (car x))11 (traverse-count (cdr x))12 1)))))13 (traverse-count x))))