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