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