Commit 0ca10887 authored by toy's avatar toy
Browse files

Eric Marsden's updated CMUCL User's manual, split up into several

files and supporting pdftex and hevea (HTML converter).
parent e47856bc
# -*- makefile -*-
LATEX = latex
BIBTEX = bibtex
PDFLATEX = pdflatex
FILES = *.tex
.SUFFIXES: .aux .bbl .tex .dvi .ps .ps1 .pdf .html .info .gz $(.SUFFIXES)
.tex.dvi: stateart.bbl index
$(LATEX) $<
rm $*.log
.tex.aux:
$(LATEX) $<
.aux.bbl: biblio.bib
$(BIBTEX) $(basename $<)
.tex.html:
hevea cmucl-user.hva $<
hacha -tocbis $@
-tidy -m *.html
.tex.info:
hevea -info cmucl-user.hva $<
.tex.pdf: index
$(PDFLATEX) $<
.dvi.ps1:
dvips -o $@ $<
.ps1.ps:
psset -d -o $@ $<
%.gz : %
gzip --best $<
.INTERMEDIATE: cmucl--user-letter.tex
cmucl-user-letter.tex: cmucl-user.tex
cp $< $@
perl -pi -e 's/documentclass\[a4paper\]/documentclass\[letter\]/' $@
install: index cmucl-user.pdf cmucl-user.ps.gz cmucl-user-letter.ps.gz cmucl-user.html cmucl-user.info
mv *.ps.gz *.pdf $(CONSORG)/doc
mv *.html *.gif $(CONSORG)/doc/cmucl-user
tar czf $(CONSORG)/doc/cmucl-user-info.tar.gz *.info
chmod 644 $(CONSORG)/doc/cmucl-user/*
clean:
-rm *.log *.bbl *.blg *.ps *.aux *.lof *.toc *.vdx *.cdx *.tdx *.idx *.gif *.out *.ilg
.PHONY: clean
index:
makeindex cmucl-user.tdx -o cmucl-user.tnd
makeindex cmucl-user.vdx -o cmucl-user.vnd
makeindex cmucl-user.fdx -o cmucl-user.fnd
makeindex cmucl-user.cdx -o cmucl-user.cnd
This diff is collapsed.
% -*- tex -*-
%
% This file contains macros which are used when translating
% to HTML using Hevea. By Luc Maranget and Eric Marsden.
\newif\ifhmode\hmodefalse
\newcommand{\xspace}{}
\let\hbox\mbox
\def\hfil{}
\def\hfill{}
\newcommand{\parbox}[3][]{\mbox{#3}}
\newcommand{\lengthtest}[1]{true}
\newenvironment{minipage}[2][]{}{}
\newcommand{\layout}[4][]
{\@open{DIV}{align=left}
[#4] \\
\fcnname{#1}\fcnname{#2} #3 \@print{&nbsp;&nbsp;&nbsp;}
\@close{DIV}}
% \newcommand{\layout}[4][]
% {\begin{tabular}
% {llp{10cm}@{\hspace{10cm}}r}\fcnname{#1} &
% \fcnname{#2} &
% \begin{flushleft}#3\end{flushleft} &
% [#4]
% \end{tabular}}
\newcommand{\fcntype}[1]{\@open{TT}{class=function-type}#1\@close{TT}}
\newcommand{\argtype}[1]{\@open{TT}{class=argument-type}#1\@close{TT}}
\newcommand{\fcnname}[1]{\@open{I}{class=function-name}#1\@close{I}}
\newcommand{\var}[1]{\@open{TT}{class=variable}#1\@close{TT}}
\newcommand{\code}[1]{\@open{TT}{class=code}#1\@close{TT}}
\newcommand{\file}[1]{\@open{TT}{class=filename}#1\@close{TT}}
%% Define a new type
%%
%% \begin{deftp}{typeclass}{typename}{args}
%% some description
%% \end{deftp}
\newenvironment{deftp}[3]
{\par\bigskip\index[types]{#2|textbf}%
\layout{#2}{\var{#3}}{#1}
\begin{quote}}
{\end{quote}}
%% Define a function
%%
%% \begin{defun}{pkg}{name}{params}
%% \defunx[pkg]{name}{params}
%% description of function
%% \end{defun}
\newenvironment{defun}[3]
{\par\defunvspace\fnindexbold{#2}\label{FN:#2}%
\layout[#1]{#2}{#3}{Function}
\begin{quote}}
{\end{quote}}
\newcommand{\defunx}[3][\mbox{}]{%
\par\fnindexbold{#2}\label{FN:#2}%
\layout[#1]{#2}{#3}{Function}}
%% Define a macro
%%
%% \begin{defmac}{pkg}{name}{params}
%% \defmacx[pkg]{name}{params}
%% description of macro
%% \end{defmac}
\newenvironment{defmac}[3]{%
\par\defunvspace\fnindexbold{#2}\label{FN:#2}%
\layout[#1]{#2}{#3}{Macro}
\begin{quote}}
{\end{quote}}
\newcommand{\defmacx}[3][\mbox{}]{%
\par\fnindexbold{#2}\label{FN:#2}%
\layout[#1]{#2}{#3}{Function}}
%% Define a variable
%%
%% \begin{defvar}{pkg}{name}
%% \defvarx[pkg]{name}
%% description of defvar
%% \end{defvar}
\newenvironment{defvar}[2]{%
\par\defunvspace\vrindexbold{#2}\label{VR:#2}
\layout[#1]{*#2*}{}{Variable}
\begin{quote}}
{\end{quote}}
\newcommand{\defvarx}[2][\mbox{}]{%
\par\vrindexbold{#2}\label{VR:#2}
\layout[#1]{*#2*}{}{Variable}}
%% Define a constant
%%
%% \begin{defconst}{pkg}{name}
%% \defconstx[pkg]{name}
%% description of defconst
%% \end{defconst}
\newenvironment{defconst}[2]{%
\defunvspace\defconstx[#1]{#2}
\begin{quote}}
{\end{quote}}
\newcommand{\defconstx}[2][\mbox{}]{%
\layout[#1]{#2}{}{Constant}}
% \@hr[NOSHADE]{.8\linewidth}{}
\newenvironment{example}
{\@open{BLOCKQUOTE}{class=example}\begin{alltt}}
{\end{alltt}\@close{BLOCKQUOTE}}
\newenvironment{lisp}
{\@open{BLOCKQUOTE}{CLASS=lisp} \begin{alltt}}
{\end{alltt}\@close{BLOCKQUOTE}}
% there are no page numbers in HTML, so we need to override certain
% cross-referencing macros
\newcommand{\pxlref}[1]{see section~\ref{#1}}
\newcommand{\xlref}[1]{See section~\ref{#1}}
\newcommand{\funref}[1]{\findexed{#1}}
\newcommand{\specref}[1]{\findexed{#1}}
\newcommand{\macref}[1]{\findexed{#1}}
\newcommand{\varref}[1]{\vindexed{#1}}
\newcommand{\conref}[1]{\conindexed{#1}}
\newcommand{\ctrl}[1]{\code{Ctrl-#1}}
\newcommand{\result}{==>}
\newcommand{\myequiv}{<==>}
\newcommand{\mopt}[1]{\code{\{#1\}}}
\newcommand{\mstar}[1]{\code{\{#1\}}$^*$}
\newcommand{\mplus}[1]{\code{\{#1\}}$^+$}
\newcommand{\mgroup}[1]{\code{\{#1\}}}
% disable ``this document generated by'' footer
\setcounter{footer}{0}
% \htmlhead{\@print{
% <a href="../../">CMUCL</a> -&gt
% <a href="../">Documentation</a> <br>}
% \@hr[NOSHADE]{.8\linewidth}{}\@print{<br>}}
% \htmlfoot{\@hr[NOSHADE]{.8\linewidth}{}
% \copyright{} 1995-2001 CMUCL Project}
\let\orig@meta=\@meta
\renewcommand{\@meta}{%
\orig@meta
\begin{rawhtml}
<link rel="stylesheet" href="cmucl.css" type="text/css">
<meta http-equiv="Content-Language" content="en">
\end{rawhtml}}
% when generating HTML, produce file names based on the chapter name
% instead of machine-generated numbers
\let\orig@input\input
\renewcommand{\input}[1]{\orig@input{#1}\cutname{#1.html}}
% generate HTML with section headers on a blue background
\setcounter{cuttingdepth}{10}
\input{report.hva}
\input{fancysection.hva}
\definecolor{chapter}{rgb}{1, 1, 0.74}
\definecolor{part}{rgb}{1, 1, 0.81}
\definecolor{section}{rgb}{1, 1, 0.83}
\definecolor{subsection}{rgb}{1, 1, 0.89}
\definecolor{subsubsection}{rgb}{1, 1, 0.93}
\renewcommand{\@bodyargs}{}
% EOF
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
\chapter{Introduction}
\cmucl{} is a free, high-performance implementation of the Common Lisp
programming language which runs on most major Unix platforms. It
mainly conforms to the ANSI Common Lisp standard. Here is a summary of
its main features:
\begin{itemize}
\item a {\em sophisticated native-code compiler} which is capable of
powerful type inferences, and generates code competitive in speed with
C compilers.
\item generational garbage collection and multiprocessing
capability on the x86 ports.
\item a foreign function interface which allows interfacing with C code and
system libraries, including shared libraries on most platforms, and
direct access to Unix system calls.
\item support for interprocess communication and remote procedure
calls.
\item an implementation of CLOS, the Common Lisp Object System, which
includes multimethods and a metaobject protocol.
\item a graphical source-level debugger using a Motif interface, and a
code profiler.
\item an interface to the X11 Window System (CLX), and a sophisticated
graphical widget library (Garnet).
\item programmer-extensible input and output streams.
\item an Emacs-like editor implemented in Common Lisp.
\item public domain: free, with full source code and no
strings attached (and no warranty). Like the GNU/Linux and *BSD
operating systems, \cmucl{} is maintained and improved by a team of
volunteers collaborating over the Internet.
\end{itemize}
This user's manual contains only implementation-specific information
about \cmucl. Users will also need a separate manual describing the
\clisp{} standard, for example the
\href{http://www.xanalys.com/software_tools/reference/HyperSpec/FrontMatter/index-text.html}
{Hyperspec}.
In addition to the language itself, this document describes a number
of useful library modules that run in \cmucl. \hemlock, an Emacs-like
text editor, is included as an integral part of the \cmucl{}
environment. Two documents describe \hemlock{}: the {\it Hemlock
User's Manual}, and the {\it Hemlock Command Implementor's Manual}.
\section{Distribution and Support}
\cmucl{} is developed and maintained by a group of volunteers who
collaborate over the internet. Sources and binary releases for the
various supported platforms can be obtained from
\href{http://www.cons.org/cmucl/}{www.cons.org/cmucl}. These pages
describe how to download by FTP or CVS.
A number of mailing lists are available for users and developers;
please see the web site for more information.
\section{Command Line Options}
The command line syntax and environment is described in the
\verb|lisp(1)| man page in the man/man1 directory of the distribution.
See also \verb|cmucl(1)|. Currently \cmucl{} accepts the following
switches:
\begin{Lentry}
\item[\code{-batch}] specifies batch mode, where all input is
directed from standard-input. An error code of 0 is returned upon
encountering an EOF and 1 otherwise.
\item[\code{-quiet}] enters quiet mode. This implies setting the
variables \code{*load-verbose*}, \code{*compile-verbose*},
\code{*compile-print*}, \code{*compile-progress*},
\code{*require-verbose*} and \code{*gc-verbose*} to NIL, and
disables the printing of the startup banner.
\item[\code{-core}] requires an argument that should be the name of a
core file. Rather than using the default core file
(\file{lib/lisp.core}), the specified core file is loaded.
\item[\code{-edit}] specifies to enter Hemlock. A file to edit may be
specified by placing the name of the file between the program name
(usually \file{lisp}) and the first switch.
\item[\code{-eval}] accepts one argument which should be a Lisp form
to evaluate during the start up sequence. The value of the form
will not be printed unless it is wrapped in a form that does output.
\item[\code{-hinit}] accepts an argument that should be the name of
the hemlock init file to load the first time the function
\findexed{ed} is invoked. The default is to load
\file{hemlock-init.\var{object-type}}, or if that does not exist,
\file{hemlock-init.lisp} from the user's home directory. If the
file is not in the user's home directory, the full path must be
specified.
\item[\code{-init}] accepts an argument that should be the name of an
init file to load during the normal start up sequence. The default
is to load \file{init.\var{object-type}} or, if that does not exist,
\file{init.lisp} from the user's home directory. If the file is not
in the user's home directory, the full path must be specified.
\item[\code{-noinit}] accepts no arguments and specifies that an init
file should not be loaded during the normal start up sequence.
Also, this switch suppresses the loading of a hemlock init file when
Hemlock is started up with the \code{-edit} switch.
\item[\code{-load}] accepts an argument which should be the name of a
file to load into Lisp before entering Lisp's read-eval-print loop.
\item[\code{-slave}] specifies that Lisp should start up as a
\i{slave} Lisp and try to connect to an editor Lisp. The name of
the editor to connect to must be specified\dash{}to find the
editor's name, use the \hemlock{} ``\code{Accept Slave
Connections}'' command. The name for the editor Lisp is of the
form:
\begin{example}
\var{machine-name}\code{:}\var{socket}
\end{example}
where \var{machine-name} is the internet host name for the machine
and \var{socket} is the decimal number of the socket to connect to.
\end{Lentry}
For more details on the use of the \code{-edit} and \code{-slave}
switches, see the {\it Hemlock User's Manual}.
Arguments to the above switches can be specified in one of two ways:
\w{\var{switch}\code{=}\var{value}} or
\w{\var{switch}<\var{space}>\var{value}}. For example, to start up
the saved core file mylisp.core use either of the following two
commands:
\begin{example}
lisp -core=mylisp.core
lisp -core mylisp.core
\end{example}
\section{Credits}
\cmucl{} was developed at the Computer Science Department of Carnegie
Mellon University. The work was a small autonomous part within the
Mach microkernel-based operating system project, and started more as a
tool development effort than a research project. The project started
out as Spice Lisp, which provided a modern Lisp implementation for use
in the CMU community. \cmucl{} has been under continual development since
the early 1980's (concurrent with the \clisp{} standardization
effort). Most of the CMU Common Lisp implementors went on to work on
the Gwydion environment for Dylan. The CMU team was lead by Scott E.
Fahlman, the \python{} compiler was written by Robert MacLachlan.
\cmucl{}'s CLOS implementation is derived from the PCL reference
implementation written an Xerox PARC. Its implementation of the LOOP
macro was derived from code from Symbolics, which was derived from
code written at MIT. The CLX code is copyrighted by Texas Instruments
Incorporated.
\cmucl{} was funded by DARPA under CMU's "Research on Parallel Computing"
contract. Rather than doing pure research on programming languages and
environments, the emphasis was on developing practical programming
tools. Sometimes this required new technology, but much of the work
was in creating a \clisp{} environment that incorporates
state-of-the-art features from existing systems (both Lisp and
non-Lisp). Archives of the project are available online.
The project funding stopped in 1994, so support at Carnegie Mellon
University has been discontinued. The project continues as a group of
users and developers collaborating over the Internet. The currently
active maintainers are:
\begin{itemize}
\item Marco Antoniotti
\item Martin Cracauer
\item Douglas Thomas Crosher
\item Rob MacLachlan
\item Pierre Mai
\item Raymond Toy
\item Peter Van Eynde
\item Paul Werkowski
\end{itemize}
In particular Paul Werkowski and Douglas Crosher completed the port
for the x86 architecture for FreeBSD. Peter VanEnyde took the FreeBSD
port and created a Linux version. Other people who have contributed to
the development of \cmucl{} since 1981 are
\begin{itemize}
\item David Axmark
\item Miles Bader
\item Rick Busdiecker
\item Bill Chiles
\item Casper Dik
\item Ted Dunning
\item Scott Fahlman
\item Mike Garland
\item Paul Gleichauf
\item Sean Hallgren
\item Richard Harris
\item Joerg-Cyril Hoehl
\item Chris Hoover
\item John Kolojejchick
\item Todd Kaufmann
\item Simon Leinen
\item Sandra Loosemore
\item William Lott
\item Dave McDonald
\item Tim Moore
\item Skef Wholey
\end{itemize}
This manual is based on CMU Technical Report CMU-CS-92-161, edited by
Robert A. MacLachlan, dated July 1992. Other contributors include
Raymond Toy, Paul Werkowski and Eric Marsden.
This diff is collapsed.
%% Replacement commands when we run latex2html. This should be last
%% so that latex2html uses these commands instead of the LaTeX
%% commands above.
\usepackage{makeidx}
\newcommand{\var}[1]{\textnormal{\textit{#1}}}
\newcommand{\code}[1]{\textnormal{\texttt{#1}}}
%%\newcommand{\printindex}[1][\mbox{}]{}
%% We need the quote environment because the alltt is broken. The
%% quote environment helps us in postprocessing to result to get
%% what we want.
\newenvironment{example}{\begin{quote}\begin{alltt}}{\end{alltt}\end{quote}}
\newenvironment{display}{\begin{quote}\begin{alltt}}{\end{alltt}\end{quote}}
\newcommand{\textnormal}[1]{\rm #1}
\newcommand{\hbox}[1]{\mbox{#1}}
\newcommand{\xspace}{}
\newcommand{newindex}[4]{}
\newcommand{\pxlref}[1]{see section~\ref{#1}}
\newcommand{\xlref}[1]{See section~\ref{#1}}
\newcommand{\tindexed}[1]{\index{#1}\texttt{#1}}
\newcommand{\findexed}[1]{\index{#1}\texttt{#1}}
\newcommand{\vindexed}[1]{\index{#1}\texttt{*#1*}}
\newcommand{\cindex}[1]{\index{#1}}
\newcommand{\cpsubindex}[2]{\index{#1!#2}}
\newcommand{\keys}[1]{\texttt{\&key} #1}
\newcommand{\morekeys}[1]{#1}
\newcommand{\yetmorekeys}[1]{#1}
\newenvironment{defun}[3]{%
\textbf{[Function]}\\
\texttt{#1#2} \emph{#3}\\}{}
\newcommand{\defunx}[3][\mbox{}]{%
\texttt{#1#2} {\em #3}\\}
\newenvironment{defmac}[3]{%
\textbf{[Macro]}\\
\texttt{#1#2} \emph{#3}\\}{}
\newcommand{\defmacx}[3][\mbox{}]{%
\texttt{#1#2} {\em #3}\\}
\newenvironment{defvar}[2]{%
\textbf{[Variable]}\\
\texttt{#1*#2*}\\ \\}{}
\newcommand{\defvarx}[2][\mbox{}]{%
\texttt{#1*#2*}\\}
\newenvironment{defconst}[2]{%
\textbf{[Constant]}\\
\texttt{#1#2}\\}{}
\newcommand{\defconstx}[2][\mbox{}]{\texttt{#1#2}\\}
\newenvironment{deftp}[3]{%
\textbf{[#1]}\\
\texttt{#2} \textit{#3}\\}{}
\newenvironment{Lentry}{\begin{description}}{\end{description}}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment