# Chapter 2.5

## Extended Types

"Always listen to experts. They'll tell you what can't be done, and why. Then do it."

Besides the data types we've already seen---strings, integers, floats, complex numbers, vectors, arrays, lists, first-class functions, structs and CLOS classes---Common Lisp has a diverse set of specialized types to serve almost every need.

Many of these specialized data types have their own set of functions for working with them. While introducing each type, I will also be covering that type's specialized function interface, and various methods of type conversion.

Where the ANSI standard falls short of your needs, it provides a mature and rich type definition system. You can also, if needs must, mercilessly abuse CLOS to define your more complicated, structured types with classes---which also allows you to use generic functions and methods to provide operator overloading for them.

### Exercise 2.5.1

**Hash Tables**

```
```

### Exercise 2.5.2

**More Hash Tables**

```
```

### Exercise 2.5.3

**Even More Hash Tables**

```
```

### Exercise 2.5.4

**Sets**

```
```

### Exercise 2.5.5

**More Sets**

```
```

### Exercise 2.5.6

**Even More Sets**

```
```

### Exercise 2.5.7

**Simple Strings**

```
```

### Exercise 2.5.8

**More Simple Strings**

```
```

### Exercise 2.5.9

**Simple Arrays**

```
```

### Exercise 2.5.10

**More Simple Arrays**

```
```

### Exercise 2.5.11

**Byte Vectors**

```
```

### Exercise 2.5.12

**More Byte Vectors**

```
```

### Exercise 2.5.13

**Unsigned Bytes**

```
```

### Exercise 2.5.14

**Signed Bytes**

```
```

### Exercise 2.5.15

**Bit Vectors**

```
```

### Exercise 2.5.16

**More Bit Vectors**

```
```

### Exercise 2.5.17

**Defining Types**

```
```

### Exercise 2.5.18

**Defining Types with CLOS**

```
```