% -*- Mode: TeX -*- %%%% ===== Fonts, etc. ===== % Concrete \def\b#1{{\bf #1}} % b = bold \def\i#1{{\it #1}} % i = italic \def\j#1{{\it #1\/}} % j = italic + kerning \def\f#1{{\dummy}\hbox{{\tt #1}}} % f = fixed \def\ff#1{\hbox{{\tt #1} }} % ff = fixed box w/ trailing space (for use in math mode) \def\ital#1{{\it #1\/}} \def\bold#1{{\bf #1}} \def\ang#1{{$\langle$}{\it #1\/}{$\rangle$\/}} \def\flr#1{{$\lfloor$}{\it #1\/}{$\rfloor$\/}} \def\underlined#1{{$\underline{\hbox{#1}}$}} \def\metavar#1{{$\langle\!\langle$}{\it #1\/}{$\rangle\!\rangle$\/}} \def\metaparam#1{{$\langle\!\langle$}\param{#1}{$\rangle\!\rangle$\/}} % Abstract %!!! Barmar: Code font needs a bigger consing dot. \def\dummy{{$ $}} %% Couldn't figure out what's keeping this from working. %% For now I guess we'll just do without. -kmp 9-Sep-91 % % \def\TTamp{{\tt\char'046}} % & % \def\TTpls{{\tt\char'053}} % + % \def\TTmin{{\tt\char'055}} % - % \def\TTstr{{\tt\char'052}} % * % \def\TTsls{{\tt\char`057}} % / % \def\TTeql{{\tt\char`075}} % = % % {\catcode'046=\active% % \catcode'053=\active\catcode'055=\active% % \catcode'052=\active\catcode'057=\active% % %\catcode'075=\active% % \gdef\clref{\bgroup% % \catcode'046=\active% % \catcode'053=\active\catcode'055=\active% % \catcode'052=\active\catcode'057=\active% % \catcode'075=\active% % \let&\TTamp% % \let+\TTpls% % \let-\TTmin% % \let*\TTstr% % \let/\TTsls% % \let\=\TTeql% % \xclref}} % % \def\xclref#1{\function #1\egroup} \def\clref#1{{\dummy}\hbox{{\function #1\/}}} \def\ttref#1{{\dummy}\hbox{{\tt #1\/}}} \def\kwd#1{\ttref{:#1}} \def\kwdref#1{\ttref{:#1}} \def\packref#1{\ttref{\uppercase{#1}}} \def\loopref{\ttref} \def\keyref#1{\clref{\}} \def\typeref {\clref} \def\misc {\clref} \def\miscref {\clref} \def\declref {\clref} \def\funref {\clref} \def\macref {\clref} \def\specref {\clref} \def\conref {\clref} \def\varref {\clref} %\def\bogusterm#1{{\word $\underline{\hbox{#1\/}}$}} \def\bogusterm#1{#1} \def\newterm #1{{\bit #1\/}\idxterm{#1}} \def\newtermidx #1#2{{\bit #1\/}\idxterm{#2}} \def\term #1{{\word #1\/}} \def\param #1{{\arg #1\/}} %%%% ===== Sections ===== \let\vv=\vtop \def\NoReturn{\EV\vrule height 8pt depth 2pt width 1pt} \def\Vtop #1{\setbox0=\vbox{#1}\dimen2=\ht0\setbox2=\null\dp2=\dp0\setbox0=\vv {\unvbox0}\advance\dimen1 by -\ht0\ht2=\dimen2\vadjust {\penalty 10000\box2}\dp0=0pt\box0} \def\Defmac #1 #2{{\let\vtop\Vtop\function #1 {\arg #2} \hfill} \Vskip\normalparskip!} \def\DefmacNoReturn #1 #2{{\let\vtop=\Vtop\function #1 {\arg #2}\quad\NoReturn\hfill} \Vskip\normalparskip!} \def\DefmacWithValuesNewline #1 #2 #3{{\let\vtop\Vtop\function #1 {\arg #2}\hfill\break \indent\quad\EV\ {\arg #3}} \Vskip\normalparskip!} \def\DefmacWithValues #1 #2 #3{{\let\vtop\Vtop\function #1 {\arg #2}\quad\EV\ {\arg #3}\hfill} \Vskip\normalparskip!} \def\Defun #1 #2{{\let\vtop=\Vtop\function #1 {\arg #2}\hfill} \Vskip\normalparskip!} \def\DefunWithValues #1 #2 #3{{\let\vtop=\Vtop\function #1 {\arg #2}\quad\EV\ {\arg #3}\hfill} \Vskip\normalparskip!} \def\DefunWithValuesNewline #1 #2 #3{{\let\vtop=\Vtop\function #1 {\arg #2}\hfill\break \indent\quad\EV\ {\arg #3}} \Vskip\normalparskip!} \def\DefunNoReturn #1 #2{{\let\vtop=\Vtop\function #1 {\arg #2}\quad \NoReturn\hfill} \Vskip\normalparskip!} \def\DefunMultiWithValues #1 #2 #3{{\let\vtop=\Vtop \def\entry##1{##1&\cr} \def\blankline{\vksip 5pt} \halign{\hskip\leftskip\function ## {\arg #1}\hfil&\quad\EV\ {\arg #2}##\cr#3}} \Vskip\normalparskip!} \def\DefunMultiAccessorWithValues #1 #2 #3 #4{{\let\vtop=\Vtop \def\blankline{\noalign{\vskip 5pt}} \hskip\leftskip\hbox{{\def\entry##1{##1&\cr}% \vbox{\halign{\function ## {\arg #1}\hfil&\quad\EV\ {\arg #2}##\cr#4}}}\qquad\vrule\qquad {\def\entry##1{##1\cr}% \vbox{\halign{\function (setf (## {\arg #1}) {\arg #3})\cr#4}}}}\hfill} \Vskip\normalparskip!} \def\Defsetf #1 #2 #3{{\let\vtop=\Vtop\function (setf (#1 {\arg #2}) {\arg #3})\hfill\break} \Vskip\normalparskip!} \def\DefsetfMulti #1 #2 #3{{\let\vtop=\Vtop \def\entry##1{##1\cr} \def\blankline{\vksip 5pt} \halign{\hskip\leftskip\function (setf (## {\arg #1}) {\arg #2})\hfil\cr#3}} \Vskip\normalparskip!} \def\Defgen #1 #2{{\let\vtop=\Vtop\function #1 {\arg #2}} \Vskip\normalparskip!} \def\DefgenWithValues #1 #2 #3{{\let\vtop=\Vtop\function #1 {\arg #2}\quad\EV\ {\arg #3}\hfill} \Vskip\normalparskip!} \def\DefgenWithValuesNewline #1 #2 #3{{\let\vtop=\Vtop\function #1 {\arg #2}}\hfill\break \indent\quad\EV\ {\arg #3} \Vskip\normalparskip!} \def\specparam#1#2{\paren{\param{#1} \typeref{#2}}} \def\Defmeth #1 #2{{\let\vtop=\Vtop\function #1 {\arg #2}} \Vskip\normalparskip!} \def\Defvar #1 {{\let\vtop=\Vtop\tt \ST#1\ST} \Vskip\normalparskip!} \def\Defvarnoast #1 {{\let\vtop=\Vtop\function #1} \Vskip\normalparskip!} \def\Defcon #1 {{\let\vtop=\Vtop\function #1} \Vskip\normalparskip!} \def\Defspec #1 #2 {{\let\vtop=\Vtop\function #1 {\arg #2} \hfill} \Vskip\normalparskip!} \def\DefspecNoReturn #1 #2 {{\let\vtop=\Vtop\function #1 {\arg #2}\quad \NoReturn\hfill} \Vskip\normalparskip!} \def\DefspecWithValues #1 #2 #3{{\let\vtop\Vtop\function #1 {\arg #2}\quad\EV\ {\arg #3}\hfill} \Vskip\normalparskip!} \def\DefspecWithValuesNewline #1 #2 #3{{\let\vtop\Vtop\function #1 {\arg #2}\hfill\break \indent\quad\EV\ {\arg #3}} \Vskip\normalparskip!} % \def\Deftype % #1 #2 {{\let\vtop=\Vtop\vbox{\halign{\hskip\leftskip{\tt ##}\hfil\cr#1} % \ifx{##}\empty\else\halign{\hskip\leftskip\hfil\i{##} ::$=$ &##\hfil\cr#2}}\fi}%\hfill\fi % \Vskip\normalparskip!} \def\Deftype#1#2{{\let\vtop=\Vtop% \halign{\hskip\leftskip{\tt (#1} {\arg ##\/}{\tt)}\hfil\cr#2\cr}\hfill} \Vskip\normalparskip!} \def\defFormat{\begingroup\catothers\catcode`\$=12\relax\doformat} \def\doformat #1 (#2) #3{\Vskip2pc!{#1}\hskip 2pc{\rm ({#2})}\hfill{#3}\par \endgroup \Vskip\normalparskip!} %%%% ===== Special Symbols ===== % Subscripts \def\ssso{{${}\sub 1$}} % Sub 1 \def\ssst{{${}\sub 2$}} % Sub 2 \def\ssse{{${}\sub 8$}} % Sub 8 \def\ssss{{${}\sub{16}$}} % Sub 16 \def\sssi{{${}\sub i$}} % Sub i \def\sssk{{${}\sub k$}} % Sub k \def\sssn{{${}\sub n$}} % Sub n \def\sssx{{${}\sub x$}} % Sub x \def\sssy{{${}\sub y$}} % Sub y \def\sssz{{${}\sub z$}} % Sub z % Relations \def\EV{{\penalty20000}{$\rightarrow$}{\penalty20000}} \def\OV{{\penalty20000}{$\buildrel{or}\over\rightarrow$}{\penalty20000}} \def\NV{{\penalty20000}{$\buildrel{not}\over\rightarrow$}{\penalty20000}} \def\EQ{{\penalty20000}{$\equiv$}{\penalty20000}} % Contexts \def\OUT{{$\triangleright$}} \def\IN#1{{$\underline{\hbox{#1}}$}} % Characters \def\CRLF{{$\hookleftarrow$}} \def\NewlineChar{\ang{Newline}} \def\SpaceChar{\ang{Space}} \def\TabChar{\ang{Tab}} \def\ReturnChar{\ang{Return}} \def\LinefeedChar{\ang{Linefeed}} \def\BackspaceChar{\ang{Backspace}} \def\PageChar{\ang{Page}} \def\RuboutChar{\ang{Rubout}} \def\WhitespaceChar{\ang{Whitespace}} \def\bq{`} \def\ampersand{{\&}} \def\tilde{{$\sim$}} \def\bsl{{\tt {\char '134}}} \def\hat{{\setbox0\hbox{{\tt {\char '136}}}\hbox to \wd0{\lower 4pt\hbox{$^{^\wedge}$}}}} \def\lbr{{\tt {\char '173}}} \def\rbr{{\tt {\char '175}}} \def\dot{{\tt {\char '056}}} \def\surd{{\tt $\surd$}} \def\vert{{\tt {\char '174}}} \def\centerdot{{$\cdot$}} \def\underscore{{\\_}} \def\lbracket{{$\lbrack$}} \def\rbracket{{$\rbrack$}} \def\minussign{$-$} %%%% ===== BNF Notation ===== \def\more#1{{\setbox0=\hbox{#1}\hbox to \wd0{\hfil}}} \def\star #1{#1{\rm *}} %\def\form {\curly{form}} % No longer used. -kmp 7-Feb-92 %\def\place{\curly{place}} % No longer used. -kmp 7-Feb-92 \def\paren #1{{\rm(}#1\/{\rm)}} \def\lparen{{\rm (}} \def\xparen{\more\lparen} \def\rparen{\/{\rm )}} \def\brac #1{{\rm[}#1\/{\rm]}} \def\lbrac{{\rm [}} \def\xbrac{\more\lbrac} \def\rbrac{\/{\rm ]}} \def\bbrac #1{\lower1pt\hbox{{\brfl[}\raise1pt\hbox{#1\/}{\brfl]}}} \def\ttbrac #1{{\tt[}#1\/{\tt]}} \def\lttbrac{{\tt [}} \def\xttbrac{\more\lttbrac} \def\rttbrac{\/{\tt ]}} \def\curly #1{{$\{$}#1\/{$\}$}} \def\lcurly{{$\{$}} \def\xcurly{\more\lcurly} \def\rcurly{\/{$\}$}} \def\plus #1{$\hbox{#1}^+$} \def\prevplus{$^+$} \def\upstar #1{$\hbox{#1}^*$} \def\one #1{$\hbox{#1}^1$} \def\placeplus{\plus{\curly{\param{place}}}} \def\begininterleave{{$\lbrack\!\lbrack\,$}} \def\extrainterleave{\more\begininterleave} \def\endinterleave{\/{$\,\rbrack\!\rbrack$}} \def\interleave#1{\begininterleave #1\/\endinterleave} %\def\DeclsAndDoc{\star{\curly{declaration $\vert$ documentation}}} \def\DeclsAndDoc{\interleave{\starparam{declaration} $\vert$ \param{documentation}}} \def\LocalDeclsAndDoc{\interleave{\starparam{local-declaration} $\vert$ \param{local-documentation}}} \def\down#1{$\downarrow$\param{#1}} \def\plusdown#1{\plus{\curly{\down{#1}}}} \def\plusparam#1{\plus{\curly{\param{#1}}}} \def\plusparen#1{\plus{\curly{\paren{#1}}}} \def\stardown#1{\star{\curly{\down{#1}}}} \def\starparam#1{\star{\curly{\param{#1}}}} \def\starparen#1{\star{\curly{\paren{#1}}}} \def\auxbnf#1#2{{\medbreak\vskip 4pt\def\CR{\cr\noalign{\penalty1000\vskip 4pt\penalty1000}&&}\arg \halign to \hsize{\hskip\leftskip\quad##&\hfil##& ##\hfil\cr &\param{#1}::$=$& #2\cr}}} %%%% ===== BNF Shorthand ===== % var % % This exists so that some local contexts can override its definition. % TVar is mnemonic for Terminal Variable, and occurs only a place where % a list cannot be substituted. \def\GTVar{\param{var}} \def\GstarTVar{\starparam{var}} \let\TVar=\GTVar \let\starTVar=\GstarTVar % var | (var [specializer]) \def\SpecializedVar{\curly{\param{var} | \paren{{\TVar} \brac{\param{specializer}}}}} % var | (var) \def\JustVar{\curly{\param{var} | \paren{\TVar}}} % var | (var [value]) \def\VarValue{\curly{\param{var} | \paren{{\TVar} \brac{\param{init-form}}}}} % var | (var [init [supplied-p]]) \def\VarValueSuppliedP{\curly{\param{var} | \paren{{\TVar} \brac{init-form \brac{supplied-p-parameter}}}}} % var | ({var | (keyword-name var)} [init [supplied-p]]) \def\KeyVarValueSuppliedP{\curly{\param{var} | \paren{\curly{\param{var} | \paren{\param{keyword-name} {\TVar}}} \brac{init-form \brac{supplied-p-parameter}}}}} % var | ({var | (keyword-name var)} [init [supplied-p]]) \def\JustKey{\curly{\param{var} | \paren{\curly{\param{var} | \paren{\param{keyword-name} {\TVar}}}}}} % var | (var [init [step]]) \def\VarInitStep{\curly{\param{var} | \paren{{\TVar} \brac{init-form \brac{step-form}}}}} %%%% ==== Document-related Shorthand ===== \def\Seefun #1{See the \term{function} \funref{#1}} \def\seefun #1{see the \term{function} \funref{#1}} \def\Seefuns #1{See the \term{functions} \funref{#1}} \def\seefuns #1{see the \term{functions} \funref{#1}} \def\Seespec #1{See the \term{special operator} \specref{#1}} \def\seespec #1{see the \term{special operator} \specref{#1}} \def\Seemac #1{See the \term{macro} \macref{#1}} \def\seemac #1{see the \term{macro} \macref{#1}} \def\Seevar #1{See the \term{variable} \varref{#1}} \def\seevar #1{see the \term{variable} \varref{#1}} \def\Seetype #1{See the \term{type} \typeref{#1}} \def\seetype #1{see the \term{type} \typeref{#1}} \def\Seemisc #1{See \miscref{#1}} \def\seemisc #1{see \miscref{#1}} \def\Seesection#1{See \secref#1} \def\seesection#1{see \secref#1} \def\Seechapter#1{See \chapref#1} \def\seechapter#1{see \chapref#1} \def\Seefigure#1{See \figref#1} \def\seefigure#1{see \figref#1} \def\Seeterm#1{See \term{#1}} \def\seeterm#1{see \term{#1}} \def\SeetermAlso#1{See also \term{#1}} \def\seetermAlso#1{see also \term{#1}} \def\noargs{\ang{no \term{arguments}}} \def\novalues{\ang{no \term{values}}} \def\eval{evaluated} \def\noeval{not evaluated} \def\evalspecial{evaluated as described below} \def\Thenextfigure{Figure {\chapno--\the\capno}} \def\thenextfigure{Figure {\chapno--\the\capno}} %% Apparently not used. -kmp 25-Apr-93 %\def\index #1{{\tt #1}} \def\code{\screen!} \def\endcode{\endscreen!} \newif \ifeditornotes \editornotestrue % might be overridden in setup-options \def\editornote#1{\ifeditornotes{\bf\lbr{#1}\rbr}\fi\ignorespaces} \def\reviewer#1{\ifeditornotes{\bf\lbr{#1}\rbr}\fi\ignorespaces} %%%%% ===== Glossary ===== % Webster's pronunciation support \def\miscaccent{{\vrule width 1pt height 2pt depth 2pt}} \def\loaccent{{$\,$\miscaccent$\,$}} \def\hiaccent{{$\,$\raise 6pt\hbox{\loaccent}$\,$}} \def\medaccent{{$\,$\miscaccent\kern -1pt\raise 6pt\hbox{\miscaccent}$\,$}} \def\maybeStress#1{{\medaccent}#1} \def\Stress#1{{\hiaccent}#1} \def\stress#1{{\loaccent}#1} \def\harda{\=a} \def\nasala{\^a} \def\softa{\"a} \def\harde{\=e} \def\hardi{\=\dotlessi} \def\hardo{\=o} \def\hardp{\=p} \def\nasalo{\^o} \def\th{$\rlap{th}/$} \def\softoo{{\edef\next{\the\font}\setbox0=\hbox{\the\mifive\accent"5E}\setbox1=\hbox{\next oo}\dimen255=.5\wd1\advance\dimen255 by -.5\wd0\vbox{\moveright\dimen255\hbox{\lower 30pt\copy0}\copy1}}} \def\hardoo{{\edef\next{\the\font}\setbox0=\hbox{\the\textfont0\accent"7B}\setbox1=\hbox{\next oo}\dimen255=.5\wd1\advance\dimen255 by -.65\wd0\vbox{\moveright\dimen255\hbox{\lower 20pt\copy0}\copy1}}} \def\reducede{{$\epsilon$}} \def\lightaccent{{\rm '}} \def\schwa{{$\epsilon$}} \def\TypographyCaveats{, except that ``{\schwa}'' is used to notate the schwa (upside-down ``e'') character} \def\pronounced#1{$\lbrack\thinspace\hbox{\b{#1}}\thinspace\rbrack$} \def\meaning#1{$\sub{#1}$}