search for books and compare prices
Tables of Contents for On Lisp
Chapter/Section Title
Page #
Page Count
The Extensible Language
1
8
Design by Evolution
1
2
Programming Bottom-Up
3
2
Extensible Software
5
1
Extending Lisp
6
2
Why Lisp (or When)
8
1
Functions
9
19
Functions as Data
9
1
Defining Functions
10
3
Functional Arguments
13
2
Functions as Properties
15
1
Scope
16
1
Closures
17
4
Local Functions
21
1
Tail-Recursion
22
2
Compilation
24
3
Functions from Lists
27
1
Functional Programming
28
12
Functional Design
28
5
Imperative Outside-In
33
2
Functional Interfaces
35
2
Interactive Programming
37
3
Utility Functions
40
21
Birth of a Utility
40
3
Invest in Abstraction
43
1
Operations on Lists
44
4
Search
48
5
Mapping
53
3
I/O
56
1
Symbols and Strings
57
2
Density
59
2
Returning Functions
61
15
Common Lisp Evolves
61
2
Orthogonality
63
2
Memoizing
65
1
Composing Functions
66
2
Recursion on Cdrs
68
2
Recursion on Subtrees
70
5
When to Build Functions
75
1
Functions as Representations
76
6
Networks
76
3
Compiling Networks
79
2
Looking Forward
81
1
Macros
82
24
How Macros Work
82
2
Backquote
84
4
Defining Simple Macros
88
3
Testing Macroexpansion
91
2
Destructuring in Parameter Lists
93
2
A Model of Macros
95
1
Macros as Programs
96
3
Macro Style
99
2
Dependence on Macros
101
1
Macros from Functions
102
3
Symbol Macros
105
1
When to Use Macros
106
12
When Nothing Else Will Do
106
3
Macro or Function?
109
2
Applications for Macros
111
7
Variable Capture
118
15
Macro Argument Capture
118
1
Free Symbol Capture
119
2
When Capture Occurs
121
4
Avoiding Capture with Better Names
125
1
Avoiding Capture by Prior Evaluation
125
3
Avoiding Capture with Gensyms
128
2
Avoiding Capture with Packages
130
1
Capture in Other Name-Spaces
130
2
Why Bother?
132
1
Other Macro Pitfalls
133
10
Number of Evaluations
133
2
Order of Evaluation
135
1
Non-functional Expanders
136
3
Recursion
139
4
Classic Macros
143
22
Creating Context
143
4
The with-Macro
147
3
Conditional Evaluation
150
4
Iteration
154
4
Iteration with Multiple Values
158
3
Need for Macros
161
4
Generalized Variables
165
16
The Concept
165
2
The Multiple Evaluation Problem
167
2
New Utilities
169
2
More Complex Utilities
171
7
Defining Inversions
178
3
Computation at Compile-Time
181
8
New Utilities
181
4
Example: Bezier Curves
185
1
Applications
186
3
Anaphoric Macros
189
12
Anaphoric Variants
189
6
Failure
195
3
Referential Transparency
198
3
Macros Returning Functions
201
12
Building Functions
201
3
Recursion on Cdrs
204
4
Recursion on Subtrees
208
3
Lazy Evaluation
211
2
Macro-Defining Macros
213
11
Abbreviations
213
3
Properties
216
2
Anaphoric Macros
218
6
Read-Macros
224
6
Macro Characters
224
2
Dispatching Macro Characters
226
1
Delimiters
227
2
When What Happens
229
1
Destructuring
230
16
Destructuring on Lists
230
1
Other Structures
231
5
Reference
236
2
Matching
238
8
A Query Compiler
246
12
The Database
247
1
Pattern-Matching Queries
248
2
A Query Interpreter
250
2
Restrictions on Binding
252
2
A Query Compiler
254
4
Continuations
258
17
Scheme Continuations
258
8
Continuation-Passing Macros
266
6
Code-Walkers and CPS Conversion
272
3
Multiple Processes
275
11
The Process Abstraction
275
2
Implementation
277
7
The Less-than-Rapid Prototype
284
2
Nondeterminism
286
19
The Concept
286
4
Search
290
2
Scheme Implementation
292
2
Common Lisp Implementation
294
4
Cuts
298
4
True Nondeterminism
302
3
Parsing with ATNs
305
16
Background
305
1
The Formalism
306
2
Nondeterminism
308
1
An ATN Compiler
309
5
A Sample ATN
314
7
Prolog
321
27
Concepts
321
2
An Interpreter
323
6
Rules
329
4
The Need for Nondeterminism
333
1
New Implementation
334
3
Adding Prolog Features
337
7
Examples
344
2
The Senses of Compile
346
2
Object-Oriented Lisp
348
33
Plus ca Change
348
1
Objects in Plain Lisp
349
15
Classes and Instances
364
4
Methods
368
6
Auxiliary Methods and Combination
374
3
CLOS and Lisp
377
2
When to Object
379
2
Appendix: Packages
381
6
Notes
387
14
Index
401