# 2.3 - Symbolic Data

## 1 Quotation

### 1.1 Exercise 2.53

What would the interpreter print in response to evaluating each of the following expressions?

```(list 'a 'b 'c)

(list (list 'george))

(cdr '((x1 x2) (y1 y2)))

(pair? (car '(a short list)))

(memq 'red '((red shoes) (blue socks)))

(memq 'red '(red shoes blue socks))
```

```;; -------------------------------------------------------------------
;; Exercise 2.53
;; -------------------------------------------------------------------

(list 'a 'b 'c)
;; (a b c)
(list (list 'george))
;; ((george))
(cdr '((x1 x2) (y1 y2)))
;; ((y1 y2))
;; (y1 y2)
(pair? (car '(a short list)))
;; #f
(memq 'red '((red shoes) (blue socks)))
;; #f
(memq 'red '(red shoes blue socks))
;; (red shoes blue socks)
```

### 1.2 Exercise 2.54

Two lists are said to be `equal?' if they contain equal elements arranged in the same order. For example,

```(equal? '(this is a list) '(this is a list))
```

is true, but

```(equal? '(this is a list) '(this (is a) list))
```

is false. To be more precise, we can define `equal?' recursively in terms of the basic `eq?' equality of symbols by saying that `a' and `b' are `equal?' if they are both symbols and the symbols are `eq?', or if they are both lists such that `(car a)' is `equal?' to `(car b)' and `(cdr a)' is `equal?' to `(cdr b)'. Using this idea, implement `equal?' as a procedure.(5)

```;; -------------------------------------------------------------------
;; Exercise 2.54
;; -------------------------------------------------------------------

(define (my-equal? a b)
(cond ((and (null? a)
(null? b))
#t)
((and (symbol? a)
(symbol? b))
(eq? a b))
((and (pair? a)
(pair? b))
(and (eq? (car a) (car b))
(my-equal? (cdr a) (cdr b))))
(else #f)))
```

### 1.3 Exercise 2.55

Eva Lu Ator types to the interpreter the expression

```(car ''abracadabra)
```

To her surprise, the interpreter prints back `quote'. Explain.

~'abracadabra~ expands to `(quote abracadabra)` Therefore ~''abracadabra~ expands to ~'(quote abracadabra)~, which expands to `(quote (quote abracadabra))`, the car of which is the atom `quote`.

## 4 Example: Huffman Encoding Trees

Created: 2015-01-26 Mon 20:12

Emacs 24.4.2 (Org mode 8.2.10)

Validate