Blob


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