# SICP Section 2.3

## Jul 29, 2017 09:01 · 188 words · 1 minute read

This section of the book discusses symbols and goes into further details on how to use them(and abstract data) in various examples: symbolic differentiation, representing sets, and Huffman Encoding trees. I will not discuss any of these here.

Scheme supports the use of symbols. They look like this:

```
(define exampleSymbol 'a)
```

Symbols can be thought of as arbitrary data objects as opposed to expressions. We use the *single quote*(as shown) above to represent symbols. Scheme provides us a primitive, `eq?`

as a means of checking if 2 symbols are equal. Here’s a simple demo:

```
;; a is not a symbol
(define a 10)
;; b is a symbol
(define b 'a)
;; Returns false because
;; you are comparing a symbol
;; to a variable(i.e a=10)
(eq? 'a a)
;; Both return true
(eq? 'a 'a)
(eq? 'a b)
```

Other procedures for manipulating symbols can be constructed from `eq?`

.

*Why are symbols important?*

Symbols extend the representational ability of our language by introducing the ability to work with arbitrary symbols as data. A really good example is ‘symbolic differentiation’ which is explained quite well in the book here