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 (memq item x)
11 (cond ((null? x) false)
12 ((eq? item (car x)) x)
13 (else (memq item (cdr x)))))
15 (define (equal? a b)
16 (cond ((and (null? a)
17 (null? b))
18 #t)
19 ((and (not (pair? a))
20 (not (pair? b))
21 (eq? a b))
22 #t)
23 ((and (pair? a)
24 (pair? b))
25 (and (equal? (car a) (car b))
26 (equal? (cdr a) (cdr b))))
27 (else #f)))
29 (test-case (equal? 4 4) #t)
30 (test-case (equal? 4 0) #f)
31 (test-case (equal? 4 '()) #f)
32 (test-case (equal? '() 4) #f)
33 (test-case (equal? '() '()) #t)
34 (test-case (equal? '(4) '()) #f)
35 (test-case (equal? '((4) (3)) '((4 3))) #f)
36 (test-case (equal? '((4) (3)) '((4) (3))) #t)
37 (test-case (equal? '((4) (3)) '((4) (2))) #f)
38 (test-case (equal? '(4 3 2) '(4 3 2 5)) #f)