Blame


1 665c255d 2023-08-04 jrmu (define (test-case actual expected)
2 665c255d 2023-08-04 jrmu (newline)
3 665c255d 2023-08-04 jrmu (display "Actual: ")
4 665c255d 2023-08-04 jrmu (display actual)
5 665c255d 2023-08-04 jrmu (newline)
6 665c255d 2023-08-04 jrmu (display "Expected: ")
7 665c255d 2023-08-04 jrmu (display expected)
8 665c255d 2023-08-04 jrmu (newline))
9 665c255d 2023-08-04 jrmu
10 665c255d 2023-08-04 jrmu (define (memq item x)
11 665c255d 2023-08-04 jrmu (cond ((null? x) false)
12 665c255d 2023-08-04 jrmu ((eq? item (car x)) x)
13 665c255d 2023-08-04 jrmu (else (memq item (cdr x)))))
14 665c255d 2023-08-04 jrmu
15 665c255d 2023-08-04 jrmu (define (equal? a b)
16 665c255d 2023-08-04 jrmu (cond ((and (null? a)
17 665c255d 2023-08-04 jrmu (null? b))
18 665c255d 2023-08-04 jrmu #t)
19 665c255d 2023-08-04 jrmu ((and (not (pair? a))
20 665c255d 2023-08-04 jrmu (not (pair? b))
21 665c255d 2023-08-04 jrmu (eq? a b))
22 665c255d 2023-08-04 jrmu #t)
23 665c255d 2023-08-04 jrmu ((and (pair? a)
24 665c255d 2023-08-04 jrmu (pair? b))
25 665c255d 2023-08-04 jrmu (and (equal? (car a) (car b))
26 665c255d 2023-08-04 jrmu (equal? (cdr a) (cdr b))))
27 665c255d 2023-08-04 jrmu (else #f)))
28 665c255d 2023-08-04 jrmu
29 665c255d 2023-08-04 jrmu (test-case (equal? 4 4) #t)
30 665c255d 2023-08-04 jrmu (test-case (equal? 4 0) #f)
31 665c255d 2023-08-04 jrmu (test-case (equal? 4 '()) #f)
32 665c255d 2023-08-04 jrmu (test-case (equal? '() 4) #f)
33 665c255d 2023-08-04 jrmu (test-case (equal? '() '()) #t)
34 665c255d 2023-08-04 jrmu (test-case (equal? '(4) '()) #f)
35 665c255d 2023-08-04 jrmu (test-case (equal? '((4) (3)) '((4 3))) #f)
36 665c255d 2023-08-04 jrmu (test-case (equal? '((4) (3)) '((4) (3))) #t)
37 665c255d 2023-08-04 jrmu (test-case (equal? '((4) (3)) '((4) (2))) #f)
38 665c255d 2023-08-04 jrmu (test-case (equal? '(4 3 2) '(4 3 2 5)) #f)
39 665c255d 2023-08-04 jrmu
40 665c255d 2023-08-04 jrmu ;; Exercise 2.55. Eva Lu Ator types to the interpreter the expression
41 665c255d 2023-08-04 jrmu
42 665c255d 2023-08-04 jrmu (car ''abracadabra)
43 665c255d 2023-08-04 jrmu
44 665c255d 2023-08-04 jrmu ;; To her surprise, the interpreter prints back quote. Explain.
45 665c255d 2023-08-04 jrmu
46 665c255d 2023-08-04 jrmu (car '(quote abracadabra))
47 665c255d 2023-08-04 jrmu (car (list quote abracadabra))
48 665c255d 2023-08-04 jrmu ;; ''abracadabra is actually (quote (quote abracadabra)), which is the same as '(quote abracadabra). The interpreter sees the symbol quote as the first element in a two-element list.