- " -

"Destructive" Operations

"Hello

World," Lisp Style

"Hello, World," Lisp Style

"There Is No List

- * -

*FEATURES* and Read-Time Conditionalization

- A -

Accessor Functions

Adding Inheritance and Tagged Structures

AllegroServe

An Abstraction Emerges

Analyzing the Results

AND

OR, and NOT

And More ---

AND, OR, and NOT

Anonymous Functions

Assignment

- B -

B

Back Cover

Basic Formatting

Basic Math

Better Result Reporting

Beyond Simple Macros

Binary Format Basics

Bit of Package and Symbol Vocabulary

Boilerplate HTML

Breaking Open the Black Box

Bulk Reads

- C -

C

CDs and Records

Chapter 1: Introduction - Why Lisp?

Chapter 10: Numbers

Characters, and Strings

Chapter 10: Numbers, Characters, and Strings

Chapter 11: Collections

Chapter 12: They Called It LISP for a Reason - List Processing

Chapter 13: Beyond Lists - Other Uses for Cons Cells

Chapter 14: Files and File I/O

Chapter 15: Practical - A Portable Pathname Library

Chapter 16: Object Reorientation - Generic Functions

Chapter 17: Object Reorientation - Classes

Chapter 18: Few FORMAT Recipes

Chapter 19: Beyond Exception Handling - Conditions and Restarts

Chapter 2: Lather

Rinse, Repeat - A Tour of the REPL

Chapter 2: Lather, Rinse, Repeat - A Tour of the REPL

Chapter 20: The Special Operators

Chapter 21: Programming in the Large - Packages and Symbols

Chapter 22: LOOP for Black Belts

Chapter 23: Practical - A Spam Filter

Chapter 24: Practical - Parsing Binary Files

Chapter 25: Practical - An ID3 Parser

Chapter 26: Practical - Web Programming with AllegroServe

Chapter 27: Practical - An MP3 Database

Chapter 28: Practical - A Shoutcast Server

Chapter 29: Practical - An MP3 Browser

Chapter 3: Practical - A Simple Database

Chapter 30: Practical - An HTML Generation Library

the Interpreter

Chapter 30: Practical - An HTML Generation Library, the Interpreter

Chapter 31: Practical - An HTML Generation Library

the Compiler

Chapter 31: Practical - An HTML Generation Library, the Compiler

Chapter 32: Conclusion - What?s Next?

Chapter 32: Conclusion - What's Next?

Chapter 4: Syntax and Semantics

Chapter 5: Functions

Chapter 6: Variables

Chapter 7: Macros - Standard Control Constructs

Chapter 8: Macros - Defining Your Own

Chapter 9: Practical - Building a Unit Test Framework

Character and Integer Directives

Character Comparisons

Character Escaping

Characters

Class-Allocated Slots

Closing Files

Combining Probabilities

Combining Recycling with Shared Structure

Comment Frames

Composite Structures

COND

Condition Handlers

Conditional Execution

Conditional Formatting

Conditions

Constants

Constructing New Pathnames

Controlling Evaluation

Cookies

Counting Loops

Couple of Utility Functions

- D -

D

DEFCLASS

DEFGENERIC

Defining a Package

Defining a Schema

Defining New Functions

Defining Your Own Packages

DEFMACRO

DEFMETHOD

Delivering Applications

Designing a Domain-Specific Language

Designing the Macros

Destructuring Variables

DESTRUCTURING-BIND

Detecting Tag Padding

DO

DOLIST and DOTIMES

Dynamic

a.k.a. Special, Variables

Dynamic, a.k.a. Special, Variables

- E -

E

English-Language Directives

Equals-Then Iteration

EVAL-WHEN

Experimenting in the REPL

Extracting Information from an ID3 Tag

- F -

F

File Output

Filenames

Filing CDs

Finding a Playlist

Fixing the Return Value

Floating-Point Directives

FOO Macros

FOO Special Operators

FORMAT Directives

Formatting Lisp Code

Free Your Mind: Interactive Programming

Function Calls

Function Parameter Lists

Function Return Values

Functional Programming and Lists

Functions As Data

a.k.a. Higher-Order Functions

Functions As Data, a.k.a. Higher-Order Functions

- G -

G

Generalized Assignment

Generating Dynamic Content with AllegroServe

Generating HTML

Generating the Expansion

Generic Functions and Classes

Generic Functions and Methods

Getting at the Results

Getting Up and Running with Lisp in a Box

Good Object-Oriented Design

- H -

H

Hash Table Iteration

Hash Tables

Hierarchy of Tests

Higher Math

Higher-Order Function Variants

Hop

Skip, Jump

Hop, Skip, Jump

How Pathnames Represent Filenames

How the Reader Uses Packages

HTML Macros

HTML Processor Interface

- I -

I

ID3 Frames

ID3 Tag Header

Implementing Shoutcast

Importing Individual Names

Improving the User Interaction

Indenting Printer

Index

Inserting Values

Integer Types

Interacting with the File System

Interfacing with Other Languages

Inverse Chi Square

Iteration

Iteration Control

- J -

J

- K -

K

Keeping Track of Inherited Slots

Keyword Parameters

- L -

L

Lexical Variables and Closures

List of Figures

List of Sidebars

List of Tables

Listing a Directory

List-Manipulation Functions

Local Flow of Control

Local Variables

Looking at the Database Contents

Lookup Tables: Alists and Plists

Looping

Looping Over Collections and Packages

- M -

M

Macro Expansion Time vs. Runtime

Macro Parameters

Macros

Macro-Writing Macros

Make It Work

Make It Right, Make It Fast

Make It Work, Make It Right, Make It Fast

Making the Dream a Reality

Manipulating the Lexical Environment

Manipulating the Playlist

Mapping

Matching Functions

Method Combination

Mixing Different Parameter Types

Multimethods

Multiple Inheritance

Multiple Values

- N -

N

Numbers

Numeric Comparisons

Numeric Literals

- O -

O

Object Initialization

Optional Parameters

Other Database Operations

Other Kinds of I/O

Other Method Combinations

Other Special Operators

Other Structures

Other Uses for Conditions

Other Ways to Modify Places

- P -

P

Package Gotchas

Packaging Mechanics

Packaging Reusable Libraries

Per-Word Statistics

Playlists As Song Sources

Plugging the Leaks

Practical Common Lisp

Primitive Binary Types

Providing Multiple Restarts

Putting It All Together

- Q -

Q

Query Parameter Types

Query Parameters

Querying the Database

Icon781 - Querying the Database
Icon009 - Querying the Database

- R -

R

Reading Binary Data

Reading Binary Objects

Refactoring

Removing Duplication and Winning Big

Rest Parameters

Restarts

Running the App

- S -

S

Sample Macro: do-primes

Saving and Loading the Database

Saving Your Work

Sequence Iterating Functions

Sequence Mapping Functions

Sequence Predicates

Sets

Setting Up and Tearing Down

S-expressions

S-expressions As Lisp Forms

Slot Specifiers

Slots and Inheritance

Small Application Framework

Song Sources

Sorting and Merging

Special Operators

String Comparisons

String Types

Strings

Strings in Binary Files

Structure of an ID3v2 Tag

Subsequence Manipulations

Subtypes of Vector

Supporting Multiple Versions of ID3

- T -

T

Table of Contents

Tagged Structures

Termination Tests

Testing a File?s Existence

Testing a File's Existence

Testing the Filter

Text Information Frames

The API

The Basic Evaluation Rule

The Browse Page

The Current Object Stack

The End of the Line

The FOO Language

The FORMAT Function

The Heart of a Spam Filter

The Implementation

The Lisp Way

The Mighty LOOP

The Parts of a LOOP

The Playlist

The Pretty Printer Backend

The Public API

The Standard Method Combination

The Story of Mac: A Just-So Story

Three Standard Packages

To Be Continued ---

Training the Filter

Icon964 - Training the Filter
Icon960 - Training the Filter

Truth

Falsehood, and Equality

Truth, Falsehood, and Equality

Two First Tries

Two Representations of Directory Names

Typographical Conventions

- U -

U

Unconditional Execution

Unwinding the Stack

Updating Existing Records - Another Use for WHERE

- V -

V

Value Accumulation

Vectors

Vectors As Sequences

Versioned Concrete Frame Classes

Versioned Frame Base Classes

- W -

W

Walking a Directory Tree

What Frames Do You Actually Need?

What?s Next

What?s Next?

What's Next

What's Next?

WHEN and UNLESS

Where It Began

Where to Go Next

Who This Book Is For

Whole Sequence Manipulations

Why Lisp?

WITH-SLOTS and WITH-ACCESSORS

Wrapping Up

Icon784 - Wrapping Up
Icon836 - Wrapping Up

Writing Binary Objects

- X -

X

- Y -

Y

- Z -

Z