Previous:
List of Figures
, Up:
Top
Table of Contents
ANSI Common Lisp
Credits
1 Introduction
1.1 Scope, Purpose, and History
1.1.1 Scope and Purpose
1.1.2 History
1.2 Organization of the Document
1.3 Referenced Publications
1.4 Definitions
1.4.1 Notational Conventions
1.4.1.1 Font Key
1.4.1.2 Modified BNF Syntax
1.4.1.2.1 Splicing in Modified BNF Syntax
1.4.1.2.2 Indirection in Modified BNF Syntax
1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax
1.4.1.3 Special Symbols
1.4.1.4 Objects with Multiple Notations
1.4.1.4.1 Case in Symbols
1.4.1.4.2 Numbers
1.4.1.4.3 Use of the Dot Character
1.4.1.4.4 NIL
1.4.1.5 Designators
1.4.1.6 Nonsense Words
1.4.2 Error Terminology
1.4.3 Sections Not Formally Part Of This Standard
1.4.4 Interpreting Dictionary Entries
1.4.4.1 The “Affected By” Section of a Dictionary Entry
1.4.4.2 The “Arguments” Section of a Dictionary Entry
1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry
1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry
1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry
1.4.4.6 Dictionary Entries for Type Specifiers
1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry
1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry
1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry
1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry
1.4.4.7 The “Constant Value” Section of a Dictionary Entry
1.4.4.8 The “Description” Section of a Dictionary Entry
1.4.4.9 The “Examples” Section of a Dictionary Entry
1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry
1.4.4.11 The “Initial Value” Section of a Dictionary Entry
1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry
1.4.4.13 The “Method Signature” Section of a Dictionary Entry
1.4.4.14 The “Name” Section of a Dictionary Entry
1.4.4.15 The “Notes” Section of a Dictionary Entry
1.4.4.16 The “Pronunciation” Section of a Dictionary Entry
1.4.4.17 The “See Also” Section of a Dictionary Entry
1.4.4.18 The “Side Effects” Section of a Dictionary Entry
1.4.4.19 The “Supertypes” Section of a Dictionary Entry
1.4.4.20 The “Syntax” Section of a Dictionary Entry
1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators
1.4.4.20.2 Naming Conventions for Rest Parameters
1.4.4.20.3 Requiring Non-Null Rest Parameters in the “Syntax” Section
1.4.4.20.4 Return values in the “Syntax” Section
1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section
1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section
1.4.4.21 The “Valid Context” Section of a Dictionary Entry
1.4.4.22 The “Value Type” Section of a Dictionary Entry
1.5 Conformance
1.5.1 Conforming Implementations
1.5.1.1 Required Language Features
1.5.1.2 Documentation of Implementation-Dependent Features
1.5.1.3 Documentation of Extensions
1.5.1.4 Treatment of Exceptional Situations
1.5.1.4.1 Resolution of Apparent Conflicts in Exceptional Situations
1.5.1.4.1.1 Examples of Resolution of Apparent Conflicts
1.5.1.5 Conformance Statement
1.5.2 Conforming Programs
1.5.2.1 Use of Implementation-Defined Language Features
1.5.2.1.1 Use of Read-Time Conditionals
1.5.2.2 Character Set for Portable Code
1.6 Language Extensions
1.7 Language Subsets
1.8 Deprecated Language Features
1.8.1 Deprecated Functions
1.8.2 Deprecated Argument Conventions
1.8.3 Deprecated Variables
1.8.4 Deprecated Reader Syntax
1.9 Symbols in the COMMON-LISP Package
2 Syntax
2.1 Character Syntax
2.1.1 Readtables
2.1.1.1 The Current Readtable
2.1.1.2 The Standard Readtable
2.1.1.3 The Initial Readtable
2.1.2 Variables that affect the Lisp Reader
2.1.3 Standard Characters
2.1.4 Character Syntax Types
2.1.4.1 Constituent Characters
2.1.4.2 Constituent Traits
2.1.4.3 Invalid Characters
2.1.4.4 Macro Characters
2.1.4.5 Multiple Escape Characters
2.1.4.5.1 Examples of Multiple Escape Characters
2.1.4.6 Single Escape Character
2.1.4.6.1 Examples of Single Escape Characters
2.1.4.7 Whitespace Characters
2.1.4.7.1 Examples of Whitespace Characters
2.2 Reader Algorithm
2.3 Interpretation of Tokens
2.3.1 Numbers as Tokens
2.3.1.1 Potential Numbers as Tokens
2.3.1.1.1 Escape Characters and Potential Numbers
2.3.1.1.2 Examples of Potential Numbers
2.3.2 Constructing Numbers from Tokens
2.3.2.1 Syntax of a Rational
2.3.2.1.1 Syntax of an Integer
2.3.2.1.2 Syntax of a Ratio
2.3.2.2 Syntax of a Float
2.3.2.3 Syntax of a Complex
2.3.3 The Consing Dot
2.3.4 Symbols as Tokens
2.3.5 Valid Patterns for Tokens
2.3.6 Package System Consistency Rules
2.4 Standard Macro Characters
2.4.1 Left-Parenthesis
2.4.2 Right-Parenthesis
2.4.3 Single-Quote
2.4.3.1 Examples of Single-Quote
2.4.4 Semicolon
2.4.4.1 Examples of Semicolon
2.4.4.2 Notes about Style for Semicolon
2.4.4.2.1 Use of Single Semicolon
2.4.4.2.2 Use of Double Semicolon
2.4.4.2.3 Use of Triple Semicolon
2.4.4.2.4 Use of Quadruple Semicolon
2.4.4.2.5 Examples of Style for Semicolon
2.4.5 Double-Quote
2.4.6 Backquote
2.4.6.1 Notes about Backquote
2.4.7 Comma
2.4.8 Sharpsign
2.4.8.1 Sharpsign Backslash
2.4.8.2 Sharpsign Single-Quote
2.4.8.3 Sharpsign Left-Parenthesis
2.4.8.4 Sharpsign Asterisk
2.4.8.4.1 Examples of Sharpsign Asterisk
2.4.8.5 Sharpsign Colon
2.4.8.6 Sharpsign Dot
2.4.8.7 Sharpsign B
2.4.8.8 Sharpsign O
2.4.8.9 Sharpsign X
2.4.8.10 Sharpsign R
2.4.8.11 Sharpsign C
2.4.8.12 Sharpsign A
2.4.8.13 Sharpsign S
2.4.8.14 Sharpsign P
2.4.8.15 Sharpsign Equal-Sign
2.4.8.16 Sharpsign Sharpsign
2.4.8.17 Sharpsign Plus
2.4.8.18 Sharpsign Minus
2.4.8.19 Sharpsign Vertical-Bar
2.4.8.19.1 Examples of Sharpsign Vertical-Bar
2.4.8.19.2 Notes about Style for Sharpsign Vertical-Bar
2.4.8.20 Sharpsign Less-Than-Sign
2.4.8.21 Sharpsign Whitespace
2.4.8.22 Sharpsign Right-Parenthesis
2.4.9 Re-Reading Abbreviated Expressions
3 Evaluation and Compilation
3.1 Evaluation
3.1.1 Introduction to Environments
3.1.1.1 The Global Environment
3.1.1.2 Dynamic Environments
3.1.1.3 Lexical Environments
3.1.1.3.1 The Null Lexical Environment
3.1.1.4 Environment Objects
3.1.2 The Evaluation Model
3.1.2.1 Form Evaluation
3.1.2.1.1 Symbols as Forms
3.1.2.1.1.1 Lexical Variables
3.1.2.1.1.2 Dynamic Variables
3.1.2.1.1.3 Constant Variables
3.1.2.1.1.4 Symbols Naming Both Lexical and Dynamic Variables
3.1.2.1.2 Conses as Forms
3.1.2.1.2.1 Special Forms
3.1.2.1.2.2 Macro Forms
3.1.2.1.2.3 Function Forms
3.1.2.1.2.4 Lambda Forms
3.1.2.1.3 Self-Evaluating Objects
3.1.2.1.3.1 Examples of Self-Evaluating Objects
3.1.3 Lambda Expressions
3.1.4 Closures and Lexical Binding
3.1.5 Shadowing
3.1.6 Extent
3.1.7 Return Values
3.2 Compilation
3.2.1 Compiler Terminology
3.2.2 Compilation Semantics
3.2.2.1 Compiler Macros
3.2.2.1.1 Purpose of Compiler Macros
3.2.2.1.2 Naming of Compiler Macros
3.2.2.1.3 When Compiler Macros Are Used
3.2.2.1.3.1 Notes about the Implementation of Compiler Macros
3.2.2.2 Minimal Compilation
3.2.2.3 Semantic Constraints
3.2.3 File Compilation
3.2.3.1 Processing of Top Level Forms
3.2.3.1.1 Processing of Defining Macros
3.2.3.1.2 Constraints on Macros and Compiler Macros
3.2.4 Literal Objects in Compiled Files
3.2.4.1 Externalizable Objects
3.2.4.2 Similarity of Literal Objects
3.2.4.2.1 Similarity of Aggregate Objects
3.2.4.2.2 Definition of Similarity
3.2.4.3 Extensions to Similarity Rules
3.2.4.4 Additional Constraints on Externalizable Objects
3.2.5 Exceptional Situations in the Compiler
3.3 Declarations
3.3.1 Minimal Declaration Processing Requirements
3.3.2 Declaration Specifiers
3.3.3 Declaration Identifiers
3.3.3.1 Shorthand notation for Type Declarations
3.3.4 Declaration Scope
3.3.4.1 Examples of Declaration Scope
3.4 Lambda Lists
3.4.1 Ordinary Lambda Lists
3.4.1.1 Specifiers for the required parameters
3.4.1.2 Specifiers for optional parameters
3.4.1.3 A specifier for a rest parameter
3.4.1.4 Specifiers for keyword parameters
3.4.1.4.1 Suppressing Keyword Argument Checking
3.4.1.4.1.1 Examples of Suppressing Keyword Argument Checking
3.4.1.5 Specifiers for
&aux
variables
3.4.1.6 Examples of Ordinary Lambda Lists
3.4.2 Generic Function Lambda Lists
3.4.3 Specialized Lambda Lists
3.4.4 Macro Lambda Lists
3.4.4.1 Destructuring by Lambda Lists
3.4.4.1.1 Data-directed Destructuring by Lambda Lists
3.4.4.1.1.1 Examples of Data-directed Destructuring by Lambda Lists
3.4.4.1.2 Lambda-list-directed Destructuring by Lambda Lists
3.4.5 Destructuring Lambda Lists
3.4.6 Boa Lambda Lists
3.4.7 Defsetf Lambda Lists
3.4.8 Deftype Lambda Lists
3.4.9 Define-modify-macro Lambda Lists
3.4.10 Define-method-combination Arguments Lambda Lists
3.4.11 Syntactic Interaction of Documentation Strings and Declarations
3.5 Error Checking in Function Calls
3.5.1 Argument Mismatch Detection
3.5.1.1 Safe and Unsafe Calls
3.5.1.1.1 Error Detection Time in Safe Calls
3.5.1.2 Too Few Arguments
3.5.1.3 Too Many Arguments
3.5.1.4 Unrecognized Keyword Arguments
3.5.1.5 Invalid Keyword Arguments
3.5.1.6 Odd Number of Keyword Arguments
3.5.1.7 Destructuring Mismatch
3.5.1.8 Errors When Calling a Next Method
3.6 Traversal Rules and Side Effects
3.7 Destructive Operations
3.7.1 Modification of Literal Objects
3.7.2 Transfer of Control during a Destructive Operation
3.7.2.1 Examples of Transfer of Control during a Destructive Operation
4 Types and Classes
4.1 Introduction to Types and Classes
4.2 Types
4.2.1 Data Type Definition
4.2.2 Type Relationships
4.2.3 Type Specifiers
4.3 Classes
4.3.1 Introduction to Classes
4.3.1.1 Standard Metaclasses
4.3.2 Defining Classes
4.3.3 Creating Instances of Classes
4.3.4 Inheritance
4.3.4.1 Examples of Inheritance
4.3.4.2 Inheritance of Class Options
4.3.5 Determining the Class Precedence List
4.3.5.1 Topological Sorting
4.3.5.2 Examples of Class Precedence List Determination
4.3.6 Redefining Classes
4.3.6.1 Modifying the Structure of Instances
4.3.6.2 Initializing Newly Added Local Slots
4.3.6.3 Customizing Class Redefinition
4.3.7 Integrating Types and Classes
5 Data and Control Flow
5.1 Generalized Reference
5.1.1 Overview of Places and Generalized Reference
5.1.1.1 Evaluation of Subforms to Places
5.1.1.1.1 Examples of Evaluation of Subforms to Places
5.1.1.2 Setf Expansions
5.1.1.2.1 Examples of Setf Expansions
5.1.2 Kinds of Places
5.1.2.1 Variable Names as Places
5.1.2.2 Function Call Forms as Places
5.1.2.3 VALUES Forms as Places
5.1.2.4 THE Forms as Places
5.1.2.5 APPLY Forms as Places
5.1.2.6 Setf Expansions and Places
5.1.2.7 Macro Forms as Places
5.1.2.8 Symbol Macros as Places
5.1.2.9 Other Compound Forms as Places
5.1.3 Treatment of Other Macros Based on SETF
5.2 Transfer of Control to an Exit Point
6 Iteration
6.1 The LOOP Facility
6.1.1 Overview of the Loop Facility
6.1.1.1 Simple vs Extended Loop
6.1.1.1.1 Simple Loop
6.1.1.1.2 Extended Loop
6.1.1.2 Loop Keywords
6.1.1.3 Parsing Loop Clauses
6.1.1.4 Expanding Loop Forms
6.1.1.5 Summary of Loop Clauses
6.1.1.5.1 Summary of Variable Initialization and Stepping Clauses
6.1.1.5.2 Summary of Value Accumulation Clauses
6.1.1.5.3 Summary of Termination Test Clauses
6.1.1.5.4 Summary of Unconditional Execution Clauses
6.1.1.5.5 Summary of Conditional Execution Clauses
6.1.1.5.6 Summary of Miscellaneous Clauses
6.1.1.6 Order of Execution
6.1.1.7 Destructuring
6.1.1.8 Restrictions on Side-Effects
6.1.2 Variable Initialization and Stepping Clauses
6.1.2.1 Iteration Control
6.1.2.1.1 The for-as-arithmetic subclause
6.1.2.1.1.1 Examples of for-as-arithmetic subclause
6.1.2.1.2 The for-as-in-list subclause
6.1.2.1.2.1 Examples of for-as-in-list subclause
6.1.2.1.3 The for-as-on-list subclause
6.1.2.1.3.1 Examples of for-as-on-list subclause
6.1.2.1.4 The for-as-equals-then subclause
6.1.2.1.4.1 Examples of for-as-equals-then subclause
6.1.2.1.5 The for-as-across subclause
6.1.2.1.5.1 Examples of for-as-across subclause
6.1.2.1.6 The for-as-hash subclause
6.1.2.1.7 The for-as-package subclause
6.1.2.1.7.1 Examples of for-as-package subclause
6.1.2.2 Local Variable Initializations
6.1.2.2.1 Examples of WITH clause
6.1.3 Value Accumulation Clauses
6.1.3.1 Examples of COLLECT clause
6.1.3.2 Examples of APPEND and NCONC clauses
6.1.3.3 Examples of COUNT clause
6.1.3.4 Examples of MAXIMIZE and MINIMIZE clauses
6.1.3.5 Examples of SUM clause
6.1.4 Termination Test Clauses
6.1.4.1 Examples of REPEAT clause
6.1.4.2 Examples of ALWAYS, NEVER, and THEREIS clauses
6.1.4.3 Examples of WHILE and UNTIL clauses
6.1.5 Unconditional Execution Clauses
6.1.5.1 Examples of unconditional execution
6.1.6 Conditional Execution Clauses
6.1.6.1 Examples of WHEN clause
6.1.7 Miscellaneous Clauses
6.1.7.1 Control Transfer Clauses
6.1.7.1.1 Examples of NAMED clause
6.1.7.2 Initial and Final Execution
6.1.8 Examples of Miscellaneous Loop Features
6.1.8.1 Examples of clause grouping
6.1.9 Notes about Loop
7 Objects
7.1 Object Creation and Initialization
7.1.1 Initialization Arguments
7.1.2 Declaring the Validity of Initialization Arguments
7.1.3 Defaulting of Initialization Arguments
7.1.4 Rules for Initialization Arguments
7.1.5 Shared-Initialize
7.1.6 Initialize-Instance
7.1.7 Definitions of Make-Instance and Initialize-Instance
7.2 Changing the Class of an Instance
7.2.1 Modifying the Structure of the Instance
7.2.2 Initializing Newly Added Local Slots
7.2.3 Customizing the Change of Class of an Instance
7.3 Reinitializing an Instance
7.3.1 Customizing Reinitialization
7.4 Meta-Objects
7.4.1 Standard Meta-objects
7.5 Slots
7.5.1 Introduction to Slots
7.5.2 Accessing Slots
7.5.3 Inheritance of Slots and Slot Options
7.6 Generic Functions and Methods
7.6.1 Introduction to Generic Functions
7.6.2 Introduction to Methods
7.6.3 Agreement on Parameter Specializers and Qualifiers
7.6.4 Congruent Lambda-lists for all Methods of a Generic Function
7.6.5 Keyword Arguments in Generic Functions and Methods
7.6.5.1 Examples of Keyword Arguments in Generic Functions and Methods
7.6.6 Method Selection and Combination
7.6.6.1 Determining the Effective Method
7.6.6.1.1 Selecting the Applicable Methods
7.6.6.1.2 Sorting the Applicable Methods by Precedence Order
7.6.6.1.3 Applying method combination to the sorted list of applicable methods
7.6.6.2 Standard Method Combination
7.6.6.3 Declarative Method Combination
7.6.6.4 Built-in Method Combination Types
7.6.7 Inheritance of Methods
8 Structures
9 Conditions
9.1 Condition System Concepts
9.1.1 Condition Types
9.1.1.1 Serious Conditions
9.1.2 Creating Conditions
9.1.2.1 Condition Designators
9.1.3 Printing Conditions
9.1.3.1 Recommended Style in Condition Reporting
9.1.3.1.1 Capitalization and Punctuation in Condition Reports
9.1.3.1.2 Leading and Trailing Newlines in Condition Reports
9.1.3.1.3 Embedded Newlines in Condition Reports
9.1.3.1.4 Note about Tabs in Condition Reports
9.1.3.1.5 Mentioning Containing Function in Condition Reports
9.1.4 Signaling and Handling Conditions
9.1.4.1 Signaling
9.1.4.1.1 Resignaling a Condition
9.1.4.2 Restarts
9.1.4.2.1 Interactive Use of Restarts
9.1.4.2.2 Interfaces to Restarts
9.1.4.2.3 Restart Tests
9.1.4.2.4 Associating a Restart with a Condition
9.1.5 Assertions
9.1.6 Notes about the Condition System's Background
10 Symbols
10.1 Symbol Concepts
11 Packages
11.1 Package Concepts
11.1.1 Introduction to Packages
11.1.1.1 Package Names and Nicknames
11.1.1.2 Symbols in a Package
11.1.1.2.1 Internal and External Symbols
11.1.1.2.2 Package Inheritance
11.1.1.2.3 Accessibility of Symbols in a Package
11.1.1.2.4 Locating a Symbol in a Package
11.1.1.2.5 Prevention of Name Conflicts in Packages
11.1.2 Standardized Packages
11.1.2.1 The COMMON-LISP Package
11.1.2.1.1 Constraints on the COMMON-LISP Package for Conforming Implementations
11.1.2.1.2 Constraints on the COMMON-LISP Package for Conforming Programs
11.1.2.1.2.1 Some Exceptions to Constraints on the COMMON-LISP Package for Conforming Programs
11.1.2.2 The COMMON-LISP-USER Package
11.1.2.3 The KEYWORD Package
11.1.2.3.1 Interning a Symbol in the KEYWORD Package
11.1.2.3.2 Notes about The KEYWORD Package
11.1.2.4 Implementation-Defined Packages
12 Numbers
12.1 Number Concepts
12.1.1 Numeric Operations
12.1.1.1 Associativity and Commutativity in Numeric Operations
12.1.1.1.1 Examples of Associativity and Commutativity in Numeric Operations
12.1.1.2 Contagion in Numeric Operations
12.1.1.3 Viewing Integers as Bits and Bytes
12.1.1.3.1 Logical Operations on Integers
12.1.1.3.2 Byte Operations on Integers
12.1.2 Implementation-Dependent Numeric Constants
12.1.3 Rational Computations
12.1.3.1 Rule of Unbounded Rational Precision
12.1.3.2 Rule of Canonical Representation for Rationals
12.1.3.3 Rule of Float Substitutability
12.1.4 Floating-point Computations
12.1.4.1 Rule of Float and Rational Contagion
12.1.4.1.1 Examples of Rule of Float and Rational Contagion
12.1.4.2 Rule of Float Approximation
12.1.4.3 Rule of Float Underflow and Overflow
12.1.4.4 Rule of Float Precision Contagion
12.1.5 Complex Computations
12.1.5.1 Rule of Complex Substitutability
12.1.5.2 Rule of Complex Contagion
12.1.5.3 Rule of Canonical Representation for Complex Rationals
12.1.5.3.1 Examples of Rule of Canonical Representation for Complex Rationals
12.1.5.4 Principal Values and Branch Cuts
12.1.6 Interval Designators
12.1.7 Random-State Operations
13 Characters
13.1 Character Concepts
13.1.1 Introduction to Characters
13.1.2 Introduction to Scripts and Repertoires
13.1.2.1 Character Scripts
13.1.2.2 Character Repertoires
13.1.3 Character Attributes
13.1.4 Character Categories
13.1.4.1 Graphic Characters
13.1.4.2 Alphabetic Characters
13.1.4.3 Characters With Case
13.1.4.3.1 Uppercase Characters
13.1.4.3.2 Lowercase Characters
13.1.4.3.3 Corresponding Characters in the Other Case
13.1.4.3.4 Case of Implementation-Defined Characters
13.1.4.4 Numeric Characters
13.1.4.5 Alphanumeric Characters
13.1.4.6 Digits in a Radix
13.1.5 Identity of Characters
13.1.6 Ordering of Characters
13.1.7 Character Names
13.1.8 Treatment of Newline during Input and Output
13.1.9 Character Encodings
13.1.10 Documentation of Implementation-Defined Scripts
14 Conses
14.1 Cons Concepts
14.1.1 Conses as Trees
14.1.1.1 General Restrictions on Parameters that must be Trees
14.1.2 Conses as Lists
14.1.2.1 Lists as Association Lists
14.1.2.2 Lists as Sets
14.1.2.3 General Restrictions on Parameters that must be Lists
15 Arrays
15.1 Array Concepts
15.1.1 Array Elements
15.1.1.1 Array Indices
15.1.1.2 Array Dimensions
15.1.1.2.1 Implementation Limits on Individual Array Dimensions
15.1.1.3 Array Rank
15.1.1.3.1 Vectors
15.1.1.3.1.1 Fill Pointers
15.1.1.3.2 Multidimensional Arrays
15.1.1.3.2.1 Storage Layout for Multidimensional Arrays
15.1.1.3.2.2 Implementation Limits on Array Rank
15.1.2 Specialized Arrays
15.1.2.1 Array Upgrading
15.1.2.2 Required Kinds of Specialized Arrays
16 Strings
16.1 String Concepts
16.1.1 Implications of Strings Being Arrays
16.1.2 Subtypes of STRING
17 Sequences
17.1 Sequence Concepts
17.1.1 General Restrictions on Parameters that must be Sequences
17.2 Rules about Test Functions
17.2.1 Satisfying a Two-Argument Test
17.2.1.1 Examples of Satisfying a Two-Argument Test
17.2.2 Satisfying a One-Argument Test
17.2.2.1 Examples of Satisfying a One-Argument Test
18 Hash Tables
18.1 Hash Table Concepts
18.1.1 Hash-Table Operations
18.1.2 Modifying Hash Table Keys
18.1.2.1 Visible Modification of Objects with respect to EQ and EQL
18.1.2.2 Visible Modification of Objects with respect to EQUAL
18.1.2.2.1 Visible Modification of Conses with respect to EQUAL
18.1.2.2.2 Visible Modification of Bit Vectors and Strings with respect to EQUAL
18.1.2.3 Visible Modification of Objects with respect to EQUALP
18.1.2.3.1 Visible Modification of Structures with respect to EQUALP
18.1.2.3.2 Visible Modification of Arrays with respect to EQUALP
18.1.2.3.3 Visible Modification of Hash Tables with respect to EQUALP
18.1.2.4 Visible Modifications by Language Extensions
19 Filenames
19.1 Overview of Filenames
19.1.1 Namestrings as Filenames
19.1.2 Pathnames as Filenames
19.1.3 Parsing Namestrings Into Pathnames
19.2 Pathnames
19.2.1 Pathname Components
19.2.1.1 The Pathname Host Component
19.2.1.2 The Pathname Device Component
19.2.1.3 The Pathname Directory Component
19.2.1.4 The Pathname Name Component
19.2.1.5 The Pathname Type Component
19.2.1.6 The Pathname Version Component
19.2.2 Interpreting Pathname Component Values
19.2.2.1 Strings in Component Values
19.2.2.1.1 Special Characters in Pathname Components
19.2.2.1.2 Case in Pathname Components
19.2.2.1.2.1 Local Case in Pathname Components
19.2.2.1.2.2 Common Case in Pathname Components
19.2.2.2 Special Pathname Component Values
19.2.2.2.1 NIL as a Component Value
19.2.2.2.2 :WILD as a Component Value
19.2.2.2.3 :UNSPECIFIC as a Component Value
19.2.2.2.3.1 Relation between component values NIL and :UNSPECIFIC
19.2.2.3 Restrictions on Wildcard Pathnames
19.2.2.4 Restrictions on Examining Pathname Components
19.2.2.4.1 Restrictions on Examining a Pathname Host Component
19.2.2.4.2 Restrictions on Examining a Pathname Device Component
19.2.2.4.3 Restrictions on Examining a Pathname Directory Component
19.2.2.4.3.1 Directory Components in Non-Hierarchical File Systems
19.2.2.4.4 Restrictions on Examining a Pathname Name Component
19.2.2.4.5 Restrictions on Examining a Pathname Type Component
19.2.2.4.6 Restrictions on Examining a Pathname Version Component
19.2.2.4.7 Notes about the Pathname Version Component
19.2.2.5 Restrictions on Constructing Pathnames
19.2.3 Merging Pathnames
19.2.3.1 Examples of Merging Pathnames
19.3 Logical Pathnames
19.3.1 Syntax of Logical Pathname Namestrings
19.3.1.1 Additional Information about Parsing Logical Pathname Namestrings
19.3.1.1.1 The Host part of a Logical Pathname Namestring
19.3.1.1.2 The Device part of a Logical Pathname Namestring
19.3.1.1.3 The Directory part of a Logical Pathname Namestring
19.3.1.1.4 The Type part of a Logical Pathname Namestring
19.3.1.1.5 The Version part of a Logical Pathname Namestring
19.3.1.1.6 Wildcard Words in a Logical Pathname Namestring
19.3.1.1.7 Lowercase Letters in a Logical Pathname Namestring
19.3.1.1.8 Other Syntax in a Logical Pathname Namestring
19.3.2 Logical Pathname Components
19.3.2.1 Unspecific Components of a Logical Pathname
19.3.2.2 Null Strings as Components of a Logical Pathname
20 Files
20.1 File System Concepts
20.1.1 Coercion of Streams to Pathnames
20.1.2 File Operations on Open and Closed Streams
20.1.3 Truenames
20.1.3.1 Examples of Truenames
21 Streams
21.1 Stream Concepts
21.1.1 Introduction to Streams
21.1.1.1 Abstract Classifications of Streams
21.1.1.1.1 Input, Output, and Bidirectional Streams
21.1.1.1.2 Open and Closed Streams
21.1.1.1.3 Interactive Streams
21.1.1.2 Abstract Classifications of Streams
21.1.1.2.4 File Streams
21.1.1.3 Other Subclasses of Stream
21.1.2 Stream Variables
21.1.3 Stream Arguments to Standardized Functions
21.1.4 Restrictions on Composite Streams
22 Printer
22.1 The Lisp Printer
22.1.1 Overview of The Lisp Printer
22.1.1.1 Multiple Possible Textual Representations
22.1.1.1.1 Printer Escaping
22.1.2 Printer Dispatching
22.1.3 Default Print-Object Methods
22.1.3.1 Printing Numbers
22.1.3.1.1 Printing Integers
22.1.3.1.2 Printing Ratios
22.1.3.1.3 Printing Floats
22.1.3.1.4 Printing Complexes
22.1.3.1.5 Note about Printing Numbers
22.1.3.2 Printing Characters
22.1.3.3 Printing Symbols
22.1.3.3.1 Package Prefixes for Symbols
22.1.3.3.2 Effect of Readtable Case on the Lisp Printer
22.1.3.3.2.1 Examples of Effect of Readtable Case on the Lisp Printer
22.1.3.4 Printing Strings
22.1.3.5 Printing Lists and Conses
22.1.3.6 Printing Bit Vectors
22.1.3.7 Printing Other Vectors
22.1.3.8 Printing Other Arrays
22.1.3.9 Examples of Printing Arrays
22.1.3.10 Printing Random States
22.1.3.11 Printing Pathnames
22.1.3.12 Printing Structures
22.1.3.13 Printing Other Objects
22.1.4 Examples of Printer Behavior
22.2 The Lisp Pretty Printer
22.2.1 Pretty Printer Concepts
22.2.1.1 Dynamic Control of the Arrangement of Output
22.2.1.2 Format Directive Interface
22.2.1.3 Compiling Format Strings
22.2.1.4 Pretty Print Dispatch Tables
22.2.1.5 Pretty Printer Margins
22.2.2 Examples of using the Pretty Printer
22.2.3 Notes about the Pretty Printer's Background
22.3 Formatted Output
22.3.1 FORMAT Basic Output
22.3.1.1 Tilde C: Character
22.3.1.2 Tilde Percent: Newline
22.3.1.3 Tilde Ampersand: Fresh-Line
22.3.1.4 Tilde Vertical-Bar: Page
22.3.1.5 Tilde Tilde: Tilde
22.3.2 FORMAT Radix Control
22.3.2.1 Tilde R: Radix
22.3.2.2 Tilde D: Decimal
22.3.2.3 Tilde B: Binary
22.3.2.4 Tilde O: Octal
22.3.2.5 Tilde X: Hexadecimal
22.3.3 FORMAT Floating-Point Printers
22.3.3.1 Tilde F: Fixed-Format Floating-Point
22.3.3.2 Tilde E: Exponential Floating-Point
22.3.3.3 Tilde G: General Floating-Point
22.3.3.4 Tilde Dollarsign: Monetary Floating-Point
22.3.4 FORMAT Printer Operations
22.3.4.1 Tilde A: Aesthetic
22.3.4.2 Tilde S: Standard
22.3.4.3 Tilde W: Write
22.3.5 FORMAT Pretty Printer Operations
22.3.5.1 Tilde Underscore: Conditional Newline
22.3.5.2 Tilde Less-Than-Sign: Logical Block
22.3.5.3 Tilde I: Indent
22.3.5.4 Tilde Slash: Call Function
22.3.6 FORMAT Layout Control
22.3.6.1 Tilde T: Tabulate
22.3.6.2 Tilde Less-Than-Sign: Justification
22.3.6.3 Tilde Greater-Than-Sign: End of Justification
22.3.7 FORMAT Control-Flow Operations
22.3.7.1 Tilde Asterisk: Go-To
22.3.7.2 Tilde Left-Bracket: Conditional Expression
22.3.7.3 Tilde Right-Bracket: End of Conditional Expression
22.3.7.4 Tilde Left-Brace: Iteration
22.3.7.5 Tilde Right-Brace: End of Iteration
22.3.7.6 Tilde Question-Mark: Recursive Processing
22.3.8 FORMAT Miscellaneous Operations
22.3.8.1 Tilde Left-Paren: Case Conversion
22.3.8.2 Tilde Right-Paren: End of Case Conversion
22.3.8.3 Tilde P: Plural
22.3.9 FORMAT Miscellaneous Pseudo-Operations
22.3.9.1 Tilde Semicolon: Clause Separator
22.3.9.2 Tilde Circumflex: Escape Upward
22.3.9.3 Tilde Newline: Ignored Newline
22.3.10 Additional Information about FORMAT Operations
22.3.10.1 Nesting of FORMAT Operations
22.3.10.2 Missing and Additional FORMAT Arguments
22.3.10.3 Additional FORMAT Parameters
22.3.10.4 Undefined FORMAT Modifier Combinations
22.3.11 Examples of FORMAT
22.3.12 Notes about FORMAT
23 Reader
23.1 Reader Concepts
23.1.1 Dynamic Control of the Lisp Reader
23.1.2 Effect of Readtable Case on the Lisp Reader
23.1.2.1 Examples of Effect of Readtable Case on the Lisp Reader
23.1.3 Argument Conventions of Some Reader Functions
23.1.3.1 The EOF-ERROR-P argument
23.1.3.2 The RECURSIVE-P argument
24 System Construction
24.1 System Construction Concepts
24.1.1 Loading
24.1.2 Features
24.1.2.1 Feature Expressions
24.1.2.1.1 Examples of Feature Expressions
25 Environment
25.1 The External Environment
25.1.1 Top level loop
25.1.2 Debugging Utilities
25.1.3 Environment Inquiry
25.1.4 Time
25.1.4.1 Decoded Time
25.1.4.2 Universal Time
25.1.4.3 Internal Time
25.1.4.4 Seconds
26 Glossary
26.1 Glossary Notation
Non-alphabetic
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Appendix A Appendix
A.1 Removed Language Features
A.1.1 Requirements for removed and deprecated features
A.1.2 Removed Types
A.1.3 Removed Operators
A.1.4 Removed Argument Conventions
A.1.5 Removed Variables
A.1.6 Removed Reader Syntax
A.1.7 Packages No Longer Required
Index
Symbol Index
List of Figures