The Advanced User's Guide
Contents
- Contents
-
- Copyright and Trademarks
-
- 1 - Introduction
-
- 1.1 - About Liquid Common Lisp
-
- 1.1.1 - Advanced tools and features
-
- 1.1.2 - Other tools and features
-
- 1.2 - Notational conventions and syntax
-
- 1.2.1 - Functions and generic functions
-
- 1.2.2 - Macros and special forms
-
- 1.2.3 - Global variables and constants
-
- 1.2.4 - Examples and code
-
- 2 - Customizing the Lisp Environment
-
- 2.1 - Controlling startup
-
- 2.2 - The default startup function
-
- 2.3 - Accessing command-line arguments
-
- 2.4 - Using an initialization file
-
- 2.5 - Loading functions on demand
-
- 2.6 - Setting memory expansion parameters
-
- 2.7 - Dynamic garbage collection and memory management
-
- 2.8 - Operating system monitoring tools
-
- 2.9 - Accessing environment variables
-
- 2.10 - Changing the prompt
-
- 2.11 - Moving around in the file system
-
- 2.12 - Saving a Lisp image
-
- 2.13 - Reference pages
-
- 3 - Optimizing Lisp Programs
-
- 3.1 - Introduction to the Compiler
-
- 3.1.1 - Selecting compilation modes
-
- 3.1.2 - When to compile code
-
- 3.1.3 - Increasing the efficiency of compiled code
-
- 3.1.4 - Showing optimization reports
-
- 3.2 - Making declarations
-
- 3.2.1 - SPECIAL declarations
-
- 3.2.2 - TYPE declarations
-
- 3.2.3 - FTYPE declarations
-
- 3.2.4 - RESTRICTIVE-FTYPE declarations
-
- 3.2.5 - TYPE-REDUCE declarations
-
- 3.2.6 - INLINE and NOTINLINE declarations
-
- 3.2.7 - IGNORE declarations
-
- 3.2.8 - OPTIMIZE declarations
-
- 3.2.9 - ARGLIST declarations
-
- 3.2.10 - DYNAMIC-EXTENT declarations
-
- 3.3 - Using type-specific operations
-
- 3.3.1 - Using fixnum operations
-
- 3.3.2 - Increasing the efficiency of array access
-
- 3.3.3 - Propagating type information
-
- 3.3.4 - Optimizing code for the MIPS architecture
-
- 3.3.5 - Compiling fast floating-point operations
-
- 3.4 - Using optimized constructs
-
- 3.4.1 - Tail call optimization
-
- 3.4.2 - Macro expansion
-
- 3.4.3 - Constant folding
-
- 3.4.4 - CASE macro optimization
-
- 3.5 - Development mode optimizations
-
- 3.6 - Debugging compiled code
-
- 3.6.1 - Tail calls
-
- 3.6.2 - Special variables
-
- 3.6.3 - DYNAMIC-EXTENT declarations
-
- 3.7 - CLOS optimizations
-
- 3.7.1 - Using many classes does not affect performance
-
- 3.7.2 - Optimization of SLOT-VALUE
-
- 3.7.3 - Optimization of MAKE-INSTANCE
-
- 3.7.4 - Method combination optimization
-
- 3.7.5 - Optimizing for demo programs
-
- 3.8 - Reference pages
-
- 4 - Working Beyond the Lisp Environment
-
- 4.1 - The Foreign Function Interface
-
- 4.1.1 - Defining and calling foreign functions
-
- 4.1.1.1 - Avoiding SIGALRM signals
-
- 4.1.1.2 - Examples
-
- 4.1.2 - Creating foreign structure types
-
- 4.1.2.1 - Foreign types
-
- 4.1.2.2 - Foreign pointer objects
-
- 4.1.2.3 - Alignment requirements
-
- 4.1.2.4 - Redefining recursive types
-
- 4.1.2.5 - Forming unions
-
- 4.1.2.6 - Miscellaneous information
-
- 4.1.2.7 - Foreign pointers in saved images
-
- 4.1.2.8 - Examples
-
- 4.1.3 - Loading foreign language files
-
- 4.1.3.1 - Restrictions when using the foreign loader
-
- 4.1.4 - Backward compatible constructs
-
- 4.1.5 - Examples
-
- 4.1.6 - Predefined data types for foreign structures
-
- 4.1.7 - Passing foreign and Lisp data types
-
- 4.1.7.1 - Passing C data to Lisp functions
-
- 4.1.7.2 - Passing FORTRAN data to Lisp functions
-
- 4.1.7.3 - Passing Pascal data to Lisp functions
-
- 4.1.7.4 - Passing Lisp data to C functions
-
- 4.1.7.5 - Passing Lisp data to FORTRAN functions
-
- 4.1.7.6 - Passing Lisp data to Pascal functions
-
- 4.1.8 - Reference pages
-
- 4.2 - Running UNIX programs from Lisp
-
- 4.2.1 - Keyword options
-
- 4.2.2 - Annotated examples
-
- 4.2.2.1 - Running a program
-
- 4.2.2.2 - Creating output for Lisp to process
-
- 4.2.2.3 - Program with unusual syntax
-
- 4.2.3 - Reference Pages
-
- 4.3 - The C-to-FFI facility
-
- 4.3.1 - Reference pages
-
- 5 - The Multitasking Facility
-
- 5.1 - About multitasking
-
- 5.1.1 - Process interaction
-
- 5.1.2 - Process scheduling
-
- 5.1.3 - A multitasking example
-
- 5.2 - Issues in multitasking
-
- 5.2.1 - Special variables
-
- 5.2.2 - Lexical variables
-
- 5.2.3 - Nonlocal control transfers
-
- 5.2.4 - Keyboard interrupts
-
- 5.2.5 - Locks
-
- 5.2.5.1 - Avoiding deadlocks
-
- 5.2.5.2 - A locking example
-
- 5.2.6 - Quitting Lisp
-
- 5.2.7 - Dynamic stack list allocation
-
- 5.3 - Debugging under multitasking
-
- 5.3.1 - Understanding streams
-
- 5.3.2 - Binding stream values
-
- 5.3.3 - Multiple processes using the same stream
-
- 5.3.4 - Breakpoints into the initial I/O stream
-
- 5.3.5 - Avoiding the stream problem
-
- 5.4 - A coded example
-
- 5.5 - Reference pages
-
- 6 - Miscellaneous Programming Features
-
- 6.1 - Introduction
-
- 6.2 - The Source File Recording Facility
-
- 6.2.1 - About source file definitions
-
- 6.2.2 - Source file recording examples
-
- 6.2.3 - Reference pages
-
- 6.3 - The Advice Facility
-
- 6.3.1 - About Advice
-
- 6.3.2 - Advice examples
-
- 6.3.3 - Reference pages
-
- 6.4 - The Resource Facility
-
- 6.4.1 - Resource examples
-
- 6.4.2 - Reference pages
-
- 6.5 - PC logging
-
- 6.5.1 - Reference pages
-
- 6.6 - Weak pointers
-
- 6.6.1 - Reference pages
-
- 6.7 - Finalization
-
- 6.7.1 - Finalization and Disksave
-
- 6.7.2 - Reference pages
-
- 7 - Additional Extensions to Common Lisp
-
- 7.1 - About extensions to Common Lisp
-
- 7.2 - Input/Output system extensions
-
- 7.2.1 - Implementation choices
-
- 7.2.2 - Fast I/O system
-
- 7.2.3 - Buffered interface
-
- 7.2.4 - Making Lisp file streams from file handles
-
- 7.2.5 - Array I/O
-
- 7.2.6 - Stream I/O control variables
-
- 7.2.7 - The Pretty Printer
-
- 7.2.8 - Miscellaneous additions
-
- 7.2.9 - Reference pages
-
- 7.3 - Packages
-
- 7.3.1 - Built-in packages
-
- 7.3.2 - Changes to make-package
-
- 7.3.3 - Extended package constructs
-
- 7.3.4 - Using packages in interpreted and compiled code
-
- 7.3.4.1 - Package rule 1
-
- 7.3.4.2 - Package rule 2
-
- 7.3.4.3 - Package rules 3 and 4
-
- 7.3.4.4 - Package rule 5
-
- 7.3.4.5 - Package rule 6
-
- 7.3.4.6 - Package rule 7
-
- 7.3.5 - Reference pages
-
- 7.4 - Floating-point numbers
-
- 7.4.1 - Floating-point error conditions
-
- 7.4.2 - Floating-point precision
-
- 7.4.3 - Floating-point component extraction
-
- 7.4.4 - Extreme floating-point numbers
-
- 7.4.5 - A known problem
-
- 7.4.6 - Reference pages
-
- 7.5 - The Load Facility
-
- 7.5.1 - Specifying pathnames
-
- 7.5.2 - Reference pages
-
- 7.6 - Hash table extensions
-
- 7.6.1 - Additional keyword argument for make-hash-table
-
- 7.6.2 - Reference pages
-
- 7.7 - CLOS extensions
-
- 7.8 - Other extensions
-
- 7.8.1 - Reference pages
-
- 8 - A Multitasking Application
-
- 8.1 - The application database
-
- 8.2 - Trees
-
- 8.3 - Processes
-
- 8.4 - The backward chainer
-
- 8.5 - The code
-
- 8.6 - A sample session
-
- Glossary
-
- Index
-
The Advanced User's Guide - 9 SEP 1996 Generated with Harlequin WebMaker