Blob


1 (define (test-case actual expected)
2 (newline)
3 (display "Actual: ")
4 (display actual)
5 (newline)
6 (display "Expected: ")
7 (display expected)
8 (newline))
10 (define (last-pair x)
11 (if (null? (cdr x))
12 x
13 (last-pair (cdr x))))
15 (define (make-cycle x)
16 (set-cdr! (last-pair x) x)
17 x)
19 (define (count-pairs x)
20 (if (not (pair? x))
21 0
22 (+ (count-pairs (car x))
23 (count-pairs (cdr x))
24 1)))
26 (define three '(a b c))
27 (define a-pair (cons '() '()))
28 (define b-pair (cons a-pair a-pair))
29 (define four (cons 'a b-pair))
30 (define seven (cons b-pair b-pair))
31 (define circular (make-cycle '(a b c)))
33 (test-case (count-pairs three) 3)
34 (test-case (count-pairs four) 4)
35 (test-case (count-pairs seven) 7)
36 (test-case (count-pairs circular) 'infinite-loop)