(define (count-pairs x)
(if (not (pair? x))
0
(+ (count-pairs (car x))
(count-pairs (cdr x))
1)))
(define a (cons 1 (cons 2 (cons 3 '()))))
(count-pairs a)
(define a (cons '() '()))
(define b (cons '() '()))
(define c (cons '() '()))
(set-car! a c)
(set-cdr! a b)
(set-cdr! c b)
(count-pairs a)
(define a (cons '() '()))
(define b (cons '() '()))
(define c (cons '() '()))
(set-car! a b)
(set-cdr! a b)
(set-car! b c)
(set-cdr! b c)
(count-pairs a)
(define a (cons '() '()))
(define b (cons '() '()))
(define c (cons '() '()))
(set-cdr! a b)
(set-cdr! b c)
(set-cdr! c a)
(count-pairs a)