Common LISP,
Edition 2 The Language
By Guy Steele

Publication Date: 15 Jun 1984
Description
The defacto standard - a must-have for all LISP programmers.


In this greatly expanded edition of the defacto standard, you'll learn about the nearly 200 changes already made since original publication - and find out about gray areas likely to be revised later. Written by the Vice- Chairman of X3J13 (the ANSI
committee responsible for the standardization of Common Lisp) and co-developer of the language itself, the new edition contains the entire text of the first edition plus six completely new chapters. They cover: - CLOS, the Common Lisp Object System, with new features to support function overloading and object-oriented programming, plus complete technical specifications * Loops, a powerful control structure for multiple variables * Conditions, a generalization of the error signaling mechanism * Series and generators * Plus other subjects not part of the ANSI standards but of interest to professional programmers. Throughout, you'll find fresh examples, additional clarifications, warnings, and tips - all presented with the author's customary vigor and wit.
About the author
By Guy Steele, Thinking Machines Corporation
Table of Contents

Contents

Preface (Second Edition)

Acknowledgments (Second Edition)

Acknowledgments (First Edition)

1. Introduction

1.1. Purpose

1.2. Notational Conventions

1.2.1. Decimal Numbers

1.2.2. Nil, False, and the Empty List

1.2.3. Evaluation, Expansion, and Equivalence

1.2.4. Errors

1.2.5. Descriptions of Functions and Other Entities

1.2.6. The Lisp Reader

1.2.7. Overview of Syntax

2. Data Types

2.1. Numbers

2.1.1. Integers

2.1.2. Ratios

2.1.3. Floating-Point Numbers

2.1.4. Complex Numbers

2.2. Characters

2.2.1. Standard Characters

2.2.2. Line Divisions

2.2.3. Non-standard Characters

2.2.4. Character Attributes

2.2.5. String Characters

2.3. Symbols

2.4. Lists and Conses

2.5. Arrays

2.5.1. Vectors

2.5.2. Strings

2.5.3. Bit-Vectors

2.6. Hash Tables

2.7. Readtables

2.8. Packages

2.9. Pathnames

2.10. Streams

2.11. Random-States

2.12. Structures

2.13. Functions

2.14. Unreadable Data Objects

2.15. Overlap, Inclusion, and Disjointness of Types

3. Scope and Extent

4. Type Specifiers

4.1. Type Specifier Symbols

4.2. Type Specifier Lists

4.3. Predicating Type Specifiers

4.4. Type Specifiers That Combine

4.5. Type Specifiers That Specialize

4.6. Type Specifiers That Abbreviate

4.7. Defining New Type Specifiers

4.8. Type Conversion Function

4.9. Determining the Type of an Object

4.10. Type Upgrading

5. Program Structure

5.1. Forms

5.1.1. Self-Evaluating Forms

5.1.2. Variables

5.1.3. Special Forms

5.1.4. Macros

5.1.5. Function Calls

5.2. Functions

5.2.1. Named Functions

5.2.2. Lambda-Expressions

5.3. Top-Level Forms

5.3.1. Defining Named Functions

5.3.2. Declaring Global Variables and Named Constants

5.3.3. Control of Time of Evaluation

6. Predicates

6.1. Logical Values

6.2. Data Type Predicates

6.2.1. General Type Predicates

6.2.2. Specific Data Type Predicates

6.3. Equality Predicates

6.4. Logical Operators

7. Control Structure

7.1. Constants and Variables

7.1.1. Reference

7.1.2. Assignment

7.2. Generalized Variables

7.3. Function Invocation

7.4. Simple Sequencing

7.5. Establishing New Variable Bindings

7.6. Conditionals

7.7. Blocks and Exits

7.8. Iteration

7.8.1. Indefinite Iteration

7.8.2. General Iteration

7.8.3. Simple Iteration Constructs

7.8.4. Mapping

7.8.5. The "Program Feature"

7.9. Structure Traversal and Side Effects

7.10. Multiple Values

7.10.1. Constructs for Handling Multiple Values

7.10.2. Rules Governing the Passing of Multiple Values

7.11. Dynamic Non-Local Exits

8. Macros

8.1. Macro Definition

8.2. Macro Expansion

8.3. Destructuring

8.4. Compiler Macros

8.5. Environments

9. Declarations

9.1. Declaration Syntax

9.2. Declaration Specifiers

9.3. Type Declaration for Forms

10. Symbols

10.1. The Property List

10.2. The Print Name

10.3. Creating Symbols

11. Packages

11.1. Consistency Rules

11.2. Package Names

11.3. Translating Strings to Symbols

11.4. Exporting and Importing Symbols

11.5. Name Conflicts

11.6. Built-in Packages

11.7. Package System Functions and Variables

11.8. Modules

11.9. An Example

12. Numbers

12.1. Precision, Contagion, and Coercion

12.2. Predicates on Numbers

12.3. Comparisons on Numbers

12.4. Arithmetic Operations

12.5. Irrational and Transcendental Functions

12.5.1. Exponential and Logarithmic Functions

12.5.2. Trigonometric and Related Functions

12.5.3. Branch Cuts, Principal Values, and Boundary Conditions in the Complex Plane

12.6. Type Conversions and Component Extractions on Numbers

12.7. Logical Operations on Numbers

12.8. Byte Manipulation Functions

12.9. Random Numbers

12.10. Implementation Parameters

13. Characters

13.1. Character Attributes

13.2. Predicates on Characters

13.3. Character Construction and Selection

13.4. Character Conversions

13.5. Character Control-Bit Functions

14. Sequences

14.1. Simple Sequence Functions

14.2. Concatenating, Mapping, and Reducing Sequences

14.3. Modifying Sequences

14.4. Searching Sequences for Items

14.5. Sorting and Merging

15. Lists

15.1. Conses

15.2. Lists

15.3. Alteration of List Structure

15.4. Substitution of Expressions

15.5. Using Lists as Sets

15.6. Association Lists

16. Hash Tables

16.1. Hash Table Functions

16.2. Primitive Hash Function

17. Arrays

17.1. Array Creation

17.2. Array Access

17.3. Array Information

17.4. Functions on Arrays of Bits

17.5. Fill Pointers

17.6. Changing the Dimensions of an Array

18. Strings

18.1. String Access

18.2. String Comparison

18.3. String Construction and Manipulation

19. Structures

19.1. Introduction to Structures

19.2. How to Use Defstruct

19.3. Using the Automatically Defined Constructor Function

19.4. Defstruct Slot-Options

19.5. Defstruct Options

19.6. By-Position Constructor Functions

19.7. Structures of Explicitly Specified Representational Type

19.7.1. Unnamed Structures

19.7.2. Named Structures

19.7.3. Other Aspects of Explicitly Specified Structures

20. The Evaluator

20.1. Run-Time Evaluation of Forms

20.2. The Top-Level Loop

21. Streams

21.1. Standard Streams

21.2. Creating New Streams

21.3. Operations on Streams

22. Input/Output

22.1. Printed Representation of Lisp Objects

22.1.1. What the Read Function Accepts

22.1.2. Parsing of Numbers and Symbols

22.1.3. Macro Characters

22.1.4. Standard Dispatching Macro Character Syntax

22.1.5. TheReadtable

22.1.6. What the Print Function Produces

22.2. Input Functions

22.2.1. Input from Character Streams

22.2.2. Input from Binary Streams

22.3. Output Functions

22.3.1. Output to Character Streams

22.3.2. Output to Binary Streams

22.3.3. Formatted Output to Character Streams

22.4. Querying the User

23. File System Interface

23.1. File Names

23.1.1. Pathnames

23.1.2. Case Conventions

23.1.3. Structured Directories

23.1.4. Extended Wildcards

23.1.5. Logical Pathnames

23.1.6. Pathname Functions

23.2. Opening and Closing Files

23.3. Renaming, Deleting, and Other File Operations

23.4. Loading Files

23.5. Accessing Directories

24. Errors

24.1. General Error-Signaling Functions

24.2. Specialized Error-Signaling Forms and Macros

24.3. Special Forms for Exhaustive Case Analysis

25. Miscellaneous Features

25.1. The Compiler

25.1.1. Compiler Diagnostics

25.1.2. Compiled Functions

25.1.3. Compilation Environment

25.1.4. Similarity of Constants

25.2. Documentation

25.3. Debugging Tools

25.4. Environment Inquiries

25.4.1. Time Functions

25.4.2. Other Environment Inquiries

25.5. Identity Function

26. Loop

26.1. Introduction

26.2. How the Loop Facility Works

26.3. Parsing Loop Clauses

26.3.1. Order of Execution

26.3.2. Kinds of Loop Clauses

26.3.3. Loop Syntax

26.4. User Extensibility

26.5. Loop Constructs

26.6. Iteration Control

26.7. End-Test Control

26.8. Value Accumulation

26.9. Variable Initializations

26.10. Conditional Execution

26.11. Unconditional Execution

26.12. Miscellaneous Features

26.12.1. Data Types

26.12.2. Destructuring

27. Pretty Printing

27.1. Introduction

27.2. Pretty Printing Control Variables

27.3. Dynamic Control of the Arrangement of Output

27.4. Format Directive Interface

27.5. Compiling Format Control Strings

27.6. Pretty Printing Dispatch Tables

28. Common Lisp Object System

28.1. Programmer Interface Concepts

28.1.1. Error Terminology

28.1.2. Classes

28.1.3. Inheritance

28.1.4. Integrating Types and Classes

28.1.5. Determining the Class Precedence List

28.1.6. Generic Functions and Methods

28.1.7. Method Selection and Combination

28.1.8. Meta-objects

28.1.9. Object Creation and Initialization

28.1.10. Redefining Classes

28.1.11. Changing the Class of an Instance

28.2. Functions in the Programmer Interface

29. Conditions

29.1. Introduction

29.2. Changes in Terminology

29.3. Survey of Concepts

29.3.1. Signaling Errors

29.3.2. Trapping Errors

29.3.3. Handling Conditions

29.3.4. Object-Oriented Basis of Condition Handling

29.3.5. Restarts

29.3.6. Anonymous Restarts

29.3.7. Named Restarts

29.3.8. Restart Functions

29.3.9. Comparison of Restarts and Catch/Throw

29.3.10. Generalized Restarts

29.3.11. Interactive Condition Handling

29.3.12. Serious Conditions

29.3.13. Non-Serious Conditions

29.3.14. Condition Types

29.3.15. Signaling Conditions

29.3.16. Resignaling Conditions

29.3.17. Condition Handlers

29.3.18. Printing Conditions

29.4. Program Interface to the Condition System

29.4.1. Signaling Conditions

29.4.2. Assertions

29.4.3. Exhaustive Case Analysis

29.4.4. Handling Conditions

29.4.5. Defining Conditions

29.4.6. Creating Conditions

29.4.7. Establishing Restarts

29.4.8. Finding and Manipulating Restarts

29.4.9. Warnings

29.4.10. Restart Functions

29.4.11. Debugging Utilities

29.5. Predefined Condition Types

Appendix A. Series

A.l. Introduction

A.2. Series Functions

A.2.1. Scanners

A.2.2. Mapping

A.2.3. Truncation and Other Simple Transducers

A.2.4. Conditional and Other Complex Transducers

A.2.5. Collectors

A.2.6. Alteration of Series

A.3. Optimization

A.3.1. Basic Restrictions

A.3.2. Constraint Cycles

A.3.3. Defining New Series Functions

A.3.4. Declarations

A.4. Primitives

Appendix B. Generators and Gatherers

B.l. Introduction

B.2. Generators

B.3. Gatherers

B.4. Discussion

Appendix C. Backquote

References

Index of X3J13 Votes

Other Indexes


Book details
ISBN: 9781555580414
Page Count: 1056
Retail Price : £43.99
Audience
Programmers working with LISP