ANSI Common Lisp
出版信息
Paul Graham / Prentice Hall / 1995-11-12 / USD 116.40
内容简介
For use as a core text supplement in any course covering common LISP such as Artificial Intelligence or Concepts of Programming Languages. Teaching students new and more powerful ways of thinking about programs, this text contains a tutorial-full of examples-that explains all the essential concepts of Lisp programming, plus an up- to-date summary of ANSI Common Lisp, listing every operator in the language. Informative and fun, it gives students everything they need to start writing programs in Lisp both efficiently and effectively, and highlights such innovative Lisp features as automatic memory management, manifest typing, closures, and more.
作者简介
保罗·格雷厄姆,英文名 Paul Graham,(1964年-),美国著名程序员、风险投资家、博客和技术作家。他以Lisp方面的工作而知名,也是最早的Web应用Viaweb的创办者之一,后来以近5千万美元价格被雅虎收购,成为Yahoo! Store。他的著作包括On Lisp (1993),ANSI Common Lisp (1995) 和Hackers & Painters (2004)。[1]
2005年他与人共同创建了著名的创业投资公司Y Combinator,先后投资了数十家创业公司,包括reddit、Justin.tv等。公司的新闻网站Hacker News是访问量最高的技术新闻信息来源之一。
2008年,他与Y Combinator的另一位创办者杰西卡·利文斯顿结婚。
他拥有哈佛大学应用科学(计算机方向)博士学位,并在罗德岛设计学院和佛罗伦萨绘画艺术学院学习过绘画。
目录
Preface
Audience
How to Use This Book
The Code
On Lisp
Acknowledgements
1 Introduction
1.1 New Tools
1.2 New Techniques
1.3 A New Approach
2 Welcome to Lisp
2.1 Form
2.2 Evaluation
2.3 Data
2.4 List Operations
2.5 Truth
2.6 Functions
2.7 Recursion
2.8 Reading Lisp
2.9 Input and Output
2.10 Variables
2.11 Assignment
2.12 Functional Programming
2.13 Iteration
2.14 Functions as Objects
2.15 Types
2.16 Looking Forward
Summary
Exercises
3 Lists
3.1 Conses
3.2 Equality
3.3 Why Lisp Has No Pointers
3.4 Building Lists
3.5 Example: Compression
3.6 Access
3.7 Mapping Functions
3.8 Trees
3.9 Understanding Recursion
3.10 Sets
3.11 Sequences
3.12 Stacks
3.13 Dotted Lists
3.14 Assoc-lists
3.15 Example: Shortest Path
3.16 Garbage
4 Specialized Data Structures
4.1 Arrays
4.2 Example: Binary Search
4.3 Strings and Characters
4.4 Sequences
4.5 Example: Parsing Dates
4.6 Structures
4.7 Example: Binary Search Trees
4.8 Hash Tables
5 Control
5.1 Blocks
5.2 Context
5.3 Conditionals
5.4 Iteration
5.5 Multiple Values
5.6 Aborts
5.7 Example: Date Arithmetic
6 Functions
6.1 Global Functions
6.2 Local Functions
6.3 Parameter Lists
6.4 Example: Utilities
6.5 Closures
6.6 Example: Function Builders
6.7 Dynamic Scope
6.8 Compilation
6.9 Using Recursion
7 Input and Output
7.1 Streams
7.2 Input
7.3 Output
7.4 Example: String Substitution
7.5 Macro Characters
8 Symbols
8.1 Symbol Names
8.2 Property Lists
8.3 Symbols Are Big
8.4 Creating Symbols
8.5 Multiple Packages
8.6 Keywords
8.7 Symbols and Variables
8.8 Example: Random Text
9 Numbers
9.1 Types
9.2 Conversion and Extraction
9.3 Comparison
9.4 Arithmetic
9.5 Exponentiation
9.6 Trigonometric Functions
9.7 Representation
9.8 Example: Ray-Tracing
10 Macros
10.1 Eval
10.2 Macros
10.3 Backquote
10.4 Example: Quicksort
10.5 Macro Design
10.6 Generalized Reference
10.7 Example: Macro Utilities
10.8 On Lisp
11 CLOS
11.1 Object-Oriented Programming
11.2 Classes and Instances
11.3 Slot Properties
11.4 Superclasses
11.5 Precedence
11.6 Generic Functions
11.7 Auxiliary Methods
11.8 Method Combination
11.9 Encapsulation
11.10 Two Models
12 Structure
12.1 Shared Structure
12.2 Modification
12.3 Example: Queues
12.4 Destructive Functions
12.5 Example: Binary Search Trees
12.6 Example: Doubly-Linked Lists
12.7 Circular Structure
12.8 Constant Structure
13 Speed
13.1 The Bottleneck Rule
13.2 Compilation
13.3 Type Declarations
13.4 Garbage Avoidance
13.5 Example: Pools
13.6 Fast Operators
13.7 Two-Phase Development
14 Advanced Topics
14.1 Type Specifiers
14.2 Binary Streams
14.3 Read-Macros
14.4 Packages
14.5 The Loop Facility
14.6 Conditions
15 Example: Inference
15.1 The Aim
15.2 Matching
15.3 Answering Queries
15.4 Analysis
16 Example: Generating HTML
16.1 HTML
16.2 HTML Utilities
16.3 An Iteration Utility
16.4 Generating Pages
17 Example: Objects
17.1 Inheritance
17.2 Multiple Inheritance
17.3 Defining Objects
17.4 Functional Syntax
17.5 Defining Methods
17.6 Instances
17.7 New Implementation
17.8 Analysis
A: Debugging
B: Lisp in Lisp
C: Changes to Common Lisp
D: Language Reference
Notes
Index