Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

intial revision, cleaned for public

  • Loading branch information...
commit 57fec117fb123f734e247f349ffb13c18ac424ba 0 parents
@trebb authored
Showing with 6,517 additions and 0 deletions.
  1. +12 −0 .bzrignore
  2. +397 −0 COPYING
  3. +78 −0 Makefile
  4. +1 −0  REVISION.tex
  5. +235 −0 TAGS
  6. +30 −0 TODO
  7. +16 −0 bzr2git.conf
  8. +152 −0 clqr-arrays.tex
  9. +101 −0 clqr-characters.tex
  10. +189 −0 clqr-clos.tex
  11. +309 −0 clqr-compiler.tex
  12. +233 −0 clqr-conditions-and-errors.tex
  13. +274 −0 clqr-conses.tex
  14. +818 −0 clqr-control-structure.tex
  15. +49 −0 clqr-environment.tex
  16. +68 −0 clqr-hash-tables.tex
  17. +852 −0 clqr-input-output.tex
  18. +372 −0 clqr-numbers.tex
  19. +220 −0 clqr-sequences.tex
  20. +109 −0 clqr-strings.tex
  21. +92 −0 clqr-structures.tex
  22. +136 −0 clqr-symbols-and-packages.tex
  23. +168 −0 clqr-system-types-and-classes.tex
  24. +451 −0 clqr.tex
  25. +21 −0 find-words.el
  26. +47 −0 hosting/SourceForge.net Project Registration for clqr Requires Your Attention.eml
  27. +86 −0 html/download.html
  28. +76 −0 html/index.html
  29. +574 −0 html/license.html
  30. +195 −0 html/new-pure.css
  31. +81 −0 html/printing.html
  32. +60 −0 html/source.html
  33. +5 −0 paper-a4.tex
  34. +5 −0 paper-current.tex
  35. +5 −0 paper-letter.tex
12 .bzrignore
@@ -0,0 +1,12 @@
+*.pdf
+*.ps
+*.dvi
+*.aux
+*.ilg
+*.ind
+*.idx
+*.toc
+*.log
+*.tar
+*.gz
+*.bz2
397 COPYING
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
78 Makefile
@@ -0,0 +1,78 @@
+# Copyright (C) 2008 Bert Burgemeister
+#
+# Permission is granted to copy, distribute and/or modify this
+# document under the terms of the GNU Free Documentation License,
+# Version 1.2 or any later version published by the Free Software
+# Foundation; with no Invariant Sections, no Front-Cover Texts and
+# no Back-Cover Texts. For details see file COPYING.
+
+CLQR = clqr
+SEND-TO-LOG = | tee -a lastbuild.log
+
+LATEX = latex
+MAKEINDEX = makeindex -c
+DVIPS = dvips
+PSNUP-A4 = psnup -W10.5cm -H29.7cm -pa4 -2
+PSNUP-LETTER = psnup -W4.25in -H11in -pletter -2
+PSBOOK-ALL = psbook
+PSBOOK-FOUR = psbook -s4
+PS2PDF = ps2pdf
+CONVERT = convert
+MONTAGE = montage
+TOUCH = touch
+CP = cp --verbose
+RM = rm --force --verbose
+MV = mv --force --verbose
+BZR_REVISION = bzr revno
+
+all: letter a4
+
+letter: $(CLQR)-letter-booklet-all.pdf $(CLQR)-letter-booklet-four.pdf $(CLQR)-letter-consec.pdf
+
+a4: $(CLQR)-a4-booklet-all.pdf $(CLQR)-a4-booklet-four.pdf $(CLQR)-a4-consec.pdf
+
+$(CLQR)-%-consec.pdf: $(CLQR)-%-consec.ps
+ $(PS2PDF) $< $@ $(SEND-TO-LOG)
+
+$(CLQR)-letter-booklet-%.pdf: $(CLQR)-letter-booklet-%.ps
+ $(PS2PDF) -sPAPERSIZE=letter $< $@ $(SEND-TO-LOG)
+
+$(CLQR)-a4-booklet-%.pdf: $(CLQR)-a4-booklet-%.ps
+ $(PS2PDF) -sPAPERSIZE=a4 $< $@ $(SEND-TO-LOG)
+
+$(CLQR)-letter-booklet-%.ps: $(CLQR)-letter-signature-%.ps
+ $(PSNUP-LETTER) $< > $@ $(SEND-TO-LOG)
+
+$(CLQR)-a4-booklet-%.ps: $(CLQR)-a4-signature-%.ps
+ $(PSNUP-A4) $< > $@ $(SEND-TO-LOG)
+
+$(CLQR)-%-signature-all.ps: $(CLQR)-%-consec.ps
+ $(PSBOOK-ALL) $< $@ $(SEND-TO-LOG)
+
+$(CLQR)-%-signature-four.ps: $(CLQR)-%-consec.ps
+ $(PSBOOK-FOUR) $< $@ $(SEND-TO-LOG)
+
+$(CLQR)-%-consec.ps: $(CLQR)-%.dvi
+ $(DVIPS) -o $@ $< $(SEND-TO-LOG)
+
+$(CLQR)-%.dvi: $(CLQR).tex $(CLQR)-*.tex paper-% paper-current.tex REVISION.tex
+ $(TOUCH) $(CLQR).ind $(SEND-TO-LOG)
+ $(LATEX) $(CLQR).tex $(SEND-TO-LOG)
+ $(LATEX) $(CLQR).tex $(SEND-TO-LOG)
+ $(MAKEINDEX) $(CLQR).idx $(SEND-TO-LOG)
+ $(LATEX) $(CLQR).tex $(SEND-TO-LOG)
+ $(MV) $(CLQR).dvi $@ $(SEND-TO-LOG)
+
+paper-%:
+ $(CP) $@.tex paper-current.tex $(SEND-TO-LOG)
+
+REVISION.tex: $(CLQR).tex
+ if $(BZR_REVISION); then $(BZR_REVISION) > $@; else $(TOUCH) $@; fi $(SEND-TO-LOG)
+
+sample.jpg: $(CLQR)-a4-consec.pdf
+ $(CONVERT) $<'[0,19-20]' -verbose -resize 40% $@ $(SEND-TO-LOG)
+ $(MONTAGE) sample-1.jpg sample-2.jpg -tile 2x1 -geometry +1+1 -background gray sample-doublepage.jpg
+ $(MONTAGE) sample-0.jpg -tile 1x1 -geometry +1+1 -background gray sample-frontcover.jpg
+
+clean:
+ $(RM) *.dvi *.toc *.aux *.log *.idx *.ilg *.ind *.ps *.pdf *~ sample.*
1  REVISION.tex
@@ -0,0 +1 @@
+35
235 TAGS
@@ -0,0 +1,235 @@
+
+clqr-arrays.tex,164
+\section{Arrays}Arrays11,410
+\subsection{Predicates}Predicates15,531
+\subsection{Array Functions} Array42,1431
+\subsection{Vector Functions} Vector125,4720
+
+clqr-characters.tex,911
+\section{Characters}Characters11,410
+ \index{char>@CHAR\boldmath$>$}char>@CHAR\boldmath$>$43,1554
+ \index{char>=@CHAR\boldmath$>=$}char>=@CHAR\boldmath$>=$44,1588
+ \index{char<@CHAR\boldmath$<$}char<@CHAR\boldmath$<$45,1624
+ \index{char<=@CHAR\boldmath$<=$}char<=@CHAR\boldmath$<=$46,1658
+ \index{string>@STRING\boldmath$>$}string>@STRING\boldmath$>$88,3462
+ \index{string>=@STRING\boldmath$>=$}string>=@STRING\boldmath$>=$89,3500
+ \index{string<@STRING\boldmath$<$}string<@STRING\boldmath$<$90,3540
+ \index{string<=@STRING\boldmath$<=$}string<=@STRING\boldmath$<=$91,3578
+ \index{STRING-CAPITALIZE}STRING-CAPITALIZE147,6046
+ \index{STRING-UPCASE}STRING-UPCASE148,6074
+ \index{STRING-DOWNCASE}STRING-DOWNCASE149,6098
+ \index{NSTRING-CAPITALIZE}NSTRING-CAPITALIZE150,6124
+ \index{NSTRING-UPCASE}NSTRING-UPCASE151,6153
+ \index{NSTRING-DOWNCASE}NSTRING-DOWNCASE152,6178
+
+clqr-clos.tex,27
+\section{CLOS}CLOS11,410
+
+clqr-compiler.tex,299
+\section{Compiler}Compiler11,410
+\subsection{Predicates}Predicates15,533
+\subsection{Compilation}Compilation30,898
+\subsection{REPL}REPL230,8526
+ \index{*}*236,8659
+ \index{+}+241,8823
+ \index{/}/245,8935
+ \index{-@--}-@--249,9065
+\subsection{Declarations}Declarations268,9567
+
+clqr-conditions-and-errors.tex,51
+\section{Conditions and Errors} Conditions11,410
+
+clqr-conses.tex,610
+\section{Conses}Conses11,410
+\subsection{Predicates}Predicates15,531
+\subsection{Lists}Lists53,1883
+ \index{FOURTH}FOURTH83,3035
+ \index{FIFTH}FIFTH84,3053
+ \index{SIXTH}SIXTH85,3070
+ \index{SEVENTH}SEVENTH86,3087
+ \index{EIGHTH}EIGHTH87,3106
+ \index{CAAR}CAAR92,3267
+ \index{CADR}CADR93,3282
+ \index{CDAR}CDAR94,3297
+ \index{CDDR}CDDR95,3312
+\subsection{Trees}Trees198,7131
+ \index{SUBST-IF}SUBST-IF221,8051
+ \index{SUBST-IF-NOT}SUBST-IF-NOT222,8071
+ \index{NSUBST-IF}NSUBST-IF223,8095
+ \index{NSUBST-IF-NOT}NSUBST-IF-NOT224,8116
+\subsection{Sets}Sets244,8806
+
+clqr-control-structure.tex,433
+\section{Control Structure}Control2,51
+\subsection{Generic Predicates}Generic6,182
+\subsection{Variables}Variables37,1212
+\subsection{Functions}Functions86,2895
+\label{section:Functions}section:Functions88,2969
+\subsection{Macros}Macros180,6135
+\subsection{Control Flow}Control266,9628
+\subsection{Iteration}Iteration386,14891
+\subsection{Loop Facility}Loop420,16238
+ \label{loop-overview}loop-overview424,16333
+
+clqr-environment.tex,41
+\section{Environment}Environment11,410
+
+clqr-hash-tables.tex,35
+\section{Hash Tables} Hash11,410
+
+clqr-input-output.tex,595
+\section{Input/Output}Input/Output2,51
+\subsection{Predicates}Predicates6,178
+\subsection{Reader}Reader37,1225
+\subsection{Macro Characters}Macro172,6576
+ \index{\#R}\192,7227
+ \index{\#*}%\197,7362
+ \index{\#A}%\205,7603
+ \index{\#(}%\209,7705
+ \index{\#=}%\218,8005
+ \index{\#\#}%\221,8094
+ \index{\#@\#$\backslash$}\224,8176
+ \index{\#<@\#\boldmath$<$}%\235,8525
+\subsection{Printer}Printer256,9107
+\subsection{Format}Format457,16555
+\label{section:Format}section:Format459,16613
+\subsection{Streams}Streams614,23763
+\subsection{Files}Files719,27880
+
+clqr-numbers.tex,3052
+\section{Numbers}Numbers2,51
+\subsection{Predicates}Predicates6,173
+ \index{>@\boldmath$>$}>@\boldmath$>$15,477
+ \index{>=@\boldmath$>=$}>=@\boldmath$>=$16,503
+ \index{<@\boldmath$<$}<@\boldmath$<$17,531
+ \index{<=@\boldmath$<=$}<=@\boldmath$<=$18,557
+ \index{=@\boldmath$=$}=@\boldmath$=$26,898
+\subsection{Numeric Functions} Numeric56,1984
+\subsection{Logic Functions} Logic151,5516
+\subsection{Unsorted}Unsorted210,8220
+ \index{SHORT-FLOAT-EPSILON}SHORT-FLOAT-EPSILON219,8557
+ \index{SINGLE-FLOAT-EPSILON}SINGLE-FLOAT-EPSILON220,8588
+ \index{DOUBLE-FLOAT-EPSILON}DOUBLE-FLOAT-EPSILON221,8620
+ \index{LONG-FLOAT-EPSILON}LONG-FLOAT-EPSILON222,8652
+ \index{SHORT-FLOAT-NEGATIVE-EPSILON}SHORT-FLOAT-NEGATIVE-EPSILON223,8682
+ \index{SINGLE-FLOAT-NEGATIVE-EPSILON}SINGLE-FLOAT-NEGATIVE-EPSILON224,8722
+ \index{DOUBLE-FLOAT-NEGATIVE-EPSILON}DOUBLE-FLOAT-NEGATIVE-EPSILON225,8763
+ \index{LONG-FLOAT-NEGATIVE-EPSILON}LONG-FLOAT-NEGATIVE-EPSILON226,8804
+ \index{LEAST-NEGATIVE-SHORT-FLOAT}LEAST-NEGATIVE-SHORT-FLOAT238,9203
+ \index{LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT}LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT239,9241
+ \index{LEAST-NEGATIVE-SINGLE-FLOAT}LEAST-NEGATIVE-SINGLE-FLOAT240,9290
+ \index{LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT}LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT241,9329
+ \index{LEAST-NEGATIVE-DOUBLE-FLOAT}LEAST-NEGATIVE-DOUBLE-FLOAT242,9379
+ \index{LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT}LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT243,9418
+ \index{LEAST-NEGATIVE-LONG-FLOAT}LEAST-NEGATIVE-LONG-FLOAT244,9468
+ \index{LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT}LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT245,9505
+ \index{LEAST-POSITIVE-SHORT-FLOAT}LEAST-POSITIVE-SHORT-FLOAT246,9553
+ \index{LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT}LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT247,9591
+ \index{LEAST-POSITIVE-SINGLE-FLOAT}LEAST-POSITIVE-SINGLE-FLOAT248,9640
+ \index{LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT}LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT249,9679
+ \index{LEAST-POSITIVE-DOUBLE-FLOAT}LEAST-POSITIVE-DOUBLE-FLOAT250,9729
+ \index{LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT}LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT251,9768
+ \index{LEAST-POSITIVE-LONG-FLOAT}LEAST-POSITIVE-LONG-FLOAT252,9818
+ \index{LEAST-POSITIVE-NORMALIZED-LONG-FLOAT}LEAST-POSITIVE-NORMALIZED-LONG-FLOAT253,9855
+ \index{MOST-NEGATIVE-DOUBLE-FLOAT}MOST-NEGATIVE-DOUBLE-FLOAT265,10174
+ \index{MOST-NEGATIVE-LONG-FLOAT}MOST-NEGATIVE-LONG-FLOAT266,10212
+ \index{MOST-NEGATIVE-SHORT-FLOAT}MOST-NEGATIVE-SHORT-FLOAT267,10248
+ \index{MOST-NEGATIVE-SINGLE-FLOAT}MOST-NEGATIVE-SINGLE-FLOAT268,10285
+ \index{MOST-NEGATIVE-FIXNUM}MOST-NEGATIVE-FIXNUM269,10323
+ \index{MOST-POSITIVE-DOUBLE-FLOAT}MOST-POSITIVE-DOUBLE-FLOAT270,10355
+ \index{MOST-POSITIVE-LONG-FLOAT}MOST-POSITIVE-LONG-FLOAT271,10393
+ \index{MOST-POSITIVE-SHORT-FLOAT}MOST-POSITIVE-SHORT-FLOAT272,10429
+ \index{MOST-POSITIVE-SINGLE-FLOAT}MOST-POSITIVE-SINGLE-FLOAT273,10466
+ \index{MOST-POSITIVE-FIXNUM}MOST-POSITIVE-FIXNUM274,10504
+
+clqr-sequences.tex,184
+\section{Sequences}Sequences2,51
+\label{section:Sequences}section:Sequences4,123
+\subsection{Sequence Predicates} Sequence7,201
+\subsection{Sequence Functions} Sequence36,1380
+
+clqr-strings.tex,33
+\section{Strings}Strings11,410
+
+clqr-structures.tex,37
+\section{Structures}Structures2,51
+
+clqr-symbols-and-packages.tex,44
+\section{Symbols and Packages}Symbols2,51
+
+clqr-system-types-and-classes.tex,48
+\section{System Types and Classes} System2,51
+
+clqr.tex,2362
+\newcommand{\maintitle}\maintitle10,359
+\newcommand{\revision}\revision11,412
+\definecolor{inecolor34,980
+\titleformat{\section}50,1311
+\titleformat{\subsection}53,1441
+\renewcommand{\toc@heading}\toc@heading58,1629
+\newenvironment{LIST}LIST75,2155
+\renewcommand{\topfraction}\topfraction84,2419
+\renewcommand{\bottomfraction}\bottomfraction85,2450
+\renewcommand*{*86,2484
+\renewcommand*{*87,2516
+\renewcommand{\thefootnote}\thefootnote88,2549
+\newcommand{\IT}\IT93,2679
+\newcommand{\LIT}\LIT104,2962
+\newcommand{\VAR}\VAR107,3042
+\newcommand{\DF}\DF110,3137
+\newcommand{\OP}\OP113,3277
+\newcommand{\Op}\Op114,3333
+\newcommand{\XOR}\XOR117,3391
+\newcommand{\OPn}\OPn121,3534
+\newcommand{\RP}\RP124,3600
+\newcommand{\GOO}\GOO128,3682
+\newcommand{\GOo}\GOo129,3741
+\newcommand{\Goo}\Goo130,3800
+\newcommand{\GOOs}\GOOs132,3897
+\newcommand{\GOos}\GOos133,3951
+\newcommand{\Goos}\Goos134,4012
+\newcommand{\GOOp}\GOOp136,4109
+\newcommand{\GOop}\GOop137,4163
+\newcommand{\Goop}\Goop138,4217
+\newcommand{\xorGOO}\xorGOO142,4364
+\newcommand{\orGOO}\orGOO152,4586
+\newcommand{\arrGOO}\arrGOO162,4824
+\newcommand{\boxGOO}\boxGOO172,5004
+\newcommand{\kwd}\kwd189,5380
+\newcommand{\KWD}\KWD192,5492
+\newcommand{\SF}\SF195,5590
+\newcommand{\FU}\FU198,5769
+\newcommand{\GFU}\GFU201,5956
+\newcommand{\V}\V204,6136
+\newcommand{\CNS}\CNS207,6315
+\newcommand{\LKWD}\LKWD210,6499
+\newcommand{\retval}\retval214,6706
+\newcommand{\retvalii}\retvalii215,6746
+\newcommand{\retvaliii}\retvaliii216,6800
+\newcommand{\T}\T219,6880
+\newcommand{\NIL}\NIL220,6916
+\newcommand{\TLD}\TLD222,6960
+\WithSuffix\newcommand\kwd*[1]{\kwd*[1]225,7043
+\WithSuffix\newcommand\KWD*[1]{\KWD*[1]226,7106
+\WithSuffix\newcommand\SF*[1]{\SF*[1]227,7169
+\WithSuffix\newcommand\FU*[1]{\FU*[1]228,7230
+\WithSuffix\newcommand\GFU*[1]{\GFU*[1]229,7291
+\WithSuffix\newcommand\V*[1]{\V*[1]230,7354
+\WithSuffix\newcommand\CNS*[1]{\CNS*[1]231,7413
+\WithSuffix\newcommand\LKWD*[1]{\LKWD*[1]232,7476
+ \renewcommand{\rmdefault}\rmdefault242,7756
+\section*{*279,9047
+\section*{*292,9310
+\renewcommand{\indexpagestyle}\indexpagestyle378,11384
+\renewenvironment{theindex}theindex379,11424
+\section*{*385,11696
+ \renewcommand{\rmdefault}\rmdefault413,12652
+ \reflectbox{lectbox419,12869
+
+REVISION.tex,0
+
+paper-letter.tex,0
+
+paper-current.tex,0
+
+paper-a4.tex,0
30 TODO
@@ -0,0 +1,30 @@
+- explanations for remaining keywords
+
+- find better bold <, >, \, {, }
+
+- snapping-in explanation starts
+
+- \arrGOO{} adds unwanted indentation
+
+
+FINAL TESTS
+
+- usage of the three \retvals
+
+- setfiability
+
+- defaults
+
+- multiple return values mentioned
+
+- arg* vs. args (list)
+
+- dotted lists
+
+- talking metavariables
+
+- lexical vs. dynamic binding
+
+- errors/conditions always mentioned as \kwd{}
+
+- applicability of declare
16 bzr2git.conf
@@ -0,0 +1,16 @@
+[DEFAULT]
+verbose = True
+patch-name-format = ""
+
+[project]
+source = bzr:source
+target = git:target
+start-revision = INITIAL
+root-directory = /home/bertb/Desktop/clqr-git
+state-file = tailor.state
+
+[bzr:source]
+repository = /home/bertb/Desktop/clqr
+
+
+[git:target]
152 clqr-arrays.tex
@@ -0,0 +1,152 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Arrays}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\label{section:Arrays}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Predicates}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{ARRAYP} \VAR{foo})}
+ Return \retval{\T} if \VAR{foo} is of type \kwd{array}.
+
+ \IT{\arrGOO{(\FU*{ADJUSTABLE-ARRAY-P} \VAR{array})\\
+ (\FU*{ARRAY-HAS-FILL-POINTER-P} \VAR{array})}{\}}}
+ Return \retval{\T} if \VAR{array} is adjustable/has a fill pointer,
+ resp.
+
+ \IT{(\FU*{ARRAY-IN-BOUNDS-P} \VAR{array} \Op{\VAR{subscripts}})}
+ Return \retval{\T} if \VAR{subscripts} are in \VAR{array}'s bounds.
+
+ \IT{\arrGOO{%
+ (\FU*{VECTORP} \VAR{ foo})\\
+ (\FU*{SIMPLE-VECTOR-P} \VAR{ foo})\\
+ (\FU*{BIT-VECTOR-P} \VAR{ foo})\\
+ (\FU*{SIMPLE-BIT-VECTOR-P} \VAR{ foo})}{\}}}
+ Return \retval{\T} if \VAR{foo} is of type \kwd{vector},
+ \kwd{simple-vector}, \kwd{bit-vector}, or \kwd{simple-bit-vector}, resp.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Array Functions}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\kwd*{SVREF} \VAR{vector} \VAR{i})}
+ Return \retval{\VAR{i}th
+ element} of \VAR{vector}. \kwd{setf}able.
+
+ \IT{(\kwd*{AREF} \VAR{array} \OPn{\VAR{subscript}})} Return
+ \retval{array element} pointed to by \VAR{subscripts}. \kwd{setf}able.
+
+ \IT{(\FU*{ROW-MAJOR-AREF} \VAR{array} \VAR{i})}
+ Return \retval{\VAR{i}th element} of \VAR{array} in row-major order.
+
+ \IT{(\FU*{ARRAY-ROW-MAJOR-INDEX} \VAR{array} \VAR{subscripts})}
+ \retval{Index} in row-major order of element denoted by \VAR{subscripts}.
+
+ \IT{(\xorGOO{\FU*{MAKE-ARRAY}\\\FU*{ADJUST-ARRAY} \VAR{ array}}{\}}%
+ \xorGOO{\VAR{dim}\\\kwd{'}(\OPn{\VAR{dim}})}{\}}
+ \orGOO{\kwd{:element-type} \VAR{ type}\DF{\T}\\
+ \kwd{:adjustable} \VAR{ bool}\DF{\NIL}\\
+ \kwd{:fill-pointer} \Goo{\VAR{num}\XOR\VAR{bool}}\DF{\NIL}\\
+ \xorGOO{\kwd{:initial-element} \VAR{ obj}\\
+ \kwd{:initial-contents} \VAR{ seq}\\
+ \kwd{:displaced-to} \xorGOO{\VAR{array}\\\VAR{bool}\DF{\NIL}}{\}}
+ \Op{\kwd{:displaced-index-offset} \VAR{i}\DF{0}}}{.}}{\}})}
+ Return fresh, or readjust, resp., \retval{vector or array of dimension(s) \VAR{dim}}.
+
+ \IT{(\FU*{ARRAY-DIMENSION} \VAR{array} \VAR{i})}
+ \retval{length of \VAR{i}th dimension} of \VAR{array}.
+
+ \IT{\CNS*{ARRAY-DIMENSION-LIMIT}}
+ Upper bound of an array dimension, $> 1024$.
+
+ \IT{(\FU*{ARRAY-DIMENSIONS} \VAR{array})} \retval{List} containing
+ \VAR{array}'s dimensions.
+
+ \IT{(\FU*{ARRAY-DISPLACEMENT} \VAR{array})} \retval{Target array} and
+ \retval{offset}.
+
+ \IT{(\FU*{ARRAY-ELEMENT-TYPE} \VAR{array})} Element \retval{type}
+ \VAR{array} holds.
+
+ \IT{(\FU*{ARRAY-RANK} \VAR{array})} \retval{Number of dimensions} of
+ \VAR{array}.
+
+ \IT{\CNS*{ARRAY-RANK-LIMIT}} Upper bound of array rank, $> 8$.
+
+ \IT{(\FU*{ARRAY-TOTAL-SIZE} \VAR{array})} \retval{Number of elements}
+ in \VAR{array}.
+
+ \IT{\CNS*{ARRAY-TOTAL-SIZE-LIMIT}} Upper bound of array size, $> 1024$.
+
+ \IT{(\FU*{LDB-TEST} \VAR{byte-spec} \VAR{integer})}
+ Return \retval{\T} if any bit specified by \VAR{byte-spec} in
+ \VAR{integer} is set.
+
+ \IT{\arrGOO{(\FU*{BIT} \VAR{ bit-array} \VAR{ subscripts})\\
+ (\FU*{SBIT} \VAR{ simple-bit-array} \VAR{ subscripts})}{\}}}
+ Return \retval{element} of \VAR{bit-array} or of \VAR{simple-bit-array}. \kwd{setf}able.
+
+ \IT{(\xorGOO{\FU*{BIT-AND}\\
+ \FU*{BIT-ANDC1}\\
+ \FU*{BIT-ANDC2}\\
+ \FU*{BIT-EQV}\\
+ \FU*{BIT-IOR}\\
+ \FU*{BIT-NAND}\\
+ \FU*{BIT-NOR}\\
+ \FU*{BIT-ORC1}\\
+ \FU*{BIT-ORC2}\\
+ \FU*{BIT-XOR}}{\}} \VAR{bit-array-a} \VAR{bit-array-b}
+ \Op{\VAR{arg}\DF{\NIL}})}
+ Return \retval{result} of bit-wise logical operations on \VAR{bit-array-a} and \VAR{bit-array-b}.
+ If \VAR{arg} is a bit array, put result there. If \VAR{arg} is \T, put result in \VAR{bit-arry-a}. If \VAR{arg} is \NIL, make a new array for result.
+
+ \IT{(\FU*{BIT-NOT} \VAR{bit-array} \Op{\VAR{arg}\DF{\NIL}})}
+ Return \retval{result} of bit-wise negation of \VAR{bit-array}.
+ If \VAR{arg} is a bit array, put result there. If \VAR{arg} is \T, put result in \VAR{bit-arry}. If \VAR{arg} is \NIL, make a new array for result.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Vector Functions}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Vectors can as well be manipulated by sequence functions, see p.\ \pageref{section:Sequences}.
+
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{VECTOR} \OPn{\VAR{foo}})} Return fresh \retval{vector of \VAR{foo}s}.
+
+ \IT{(\FU*{VECTOR-PUSH} \VAR{foo} \VAR{vector})}
+ Return \retval{\NIL} if \VAR{vector}'s fill pointer equals size of
+ \VAR{vector}. Otherwise
+ replace element of \VAR{vector} pointed to by \retval{fill pointer} with
+ \VAR{foo}, then increment fill pointer.
+
+ \IT{(\FU*{VECTOR-PUSH-EXTEND} \VAR{foo} \VAR{vector} \Op{\VAR{num}})}
+ Replace element of \VAR{vector} pointed to by \retval{fill pointer} with
+ \VAR{foo}, then increment fill pointer. Extend \VAR{vector}'s size by
+ $\ge \VAR{num}$ if necessary.
+
+ \IT{(\FU*{VECTOR-POP} \VAR{vector})}
+ Return \retval{element of \VAR{vector}} its fillpointer points to
+ after decrementation.
+
+\end{LIST}
+
+
101 clqr-characters.tex
@@ -0,0 +1,101 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Characters}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{LIST}{1cm}
+
+ \IT{\arrGOO{(\FU*{CHARACTERP} \VAR{ foo})\\
+ (\FU*{STANDARD-CHAR-P} \VAR{ char})}{\}}}
+ Return \retval{\T} if \VAR{foo} is indicated type.
+
+ \IT{\arrGOO{(\FU*{GRAPHIC-CHAR-P} \VAR{ char})\\
+ (\FU*{ALPHA-CHAR-P} \VAR{ char})\\
+ (\FU*{ALPHANUMERICP} \VAR{ char})}{\}}}
+ \retval{\T} if \VAR{char} is visible, alphabetic, or
+ alphanumeric, resp.
+
+ \IT{\arrGOO{(\FU*{UPPER-CASE-P} \VAR{ char})\\
+ (\FU*{LOWER-CASE-P} \VAR{ char})\\
+ (\FU*{BOTH-CASE-P} \VAR{ char})}{\}}}
+ Return \retval{\T} if \VAR{char} is uppercase, lowercase, or
+ able to be in another case, resp.
+
+ \IT{(\FU*{DIGIT-CHAR-P} \VAR{char} \VAR{radix}\DF{10})}
+ Return \retval{its weight} if \VAR{char} is a digit, or
+ \retval{\NIL} otherwise.
+
+ \IT{\arrGOO{(\FU*{CHAR=}\RP{\VAR{
+ character}})\\(\FU*{CHAR/=}\RP{\VAR{
+ character}})}{\}}}
+ Return \retval{\T} if all \VAR{character}s, or
+ none, resp., are equal.
+
+ \IT{\arrGOO{(\FU*{CHAR-EQUAL}\RP{\VAR{
+ character}})\\(\FU*{CHAR-NOT-EQUAL}\RP{\VAR{ character}})}{\}}}
+ Return \retval{\T} if all \VAR{character}s, or
+ none, resp., are equal ignoring case.
+
+ \IT{\arrGOO{(\FU{CHAR\boldmath$>$}\RP{\VAR{
+ character}})\\(\FU{CHAR\boldmath$>=$}\RP{\VAR{
+ character}})\\(\FU{CHAR\boldmath$<$}\RP{\VAR{
+ character}})\\(\FU{CHAR\boldmath$<=$}\RP{\VAR{
+ character}})}{\}}}
+ \index{char>@CHAR\boldmath$>$}%
+ \index{char>=@CHAR\boldmath$>=$}%
+ \index{char<@CHAR\boldmath$<$}%
+ \index{char<=@CHAR\boldmath$<=$}%
+ Return \retval{\T} if \VAR{character}s are
+ monotonically decreasing, monotonically non-increasing, monotonically
+ increasing, or monotonically non-decreasing, resp.
+
+ \IT{\arrGOO{
+ (\FU*{CHAR-GREATERP}\RP{\VAR{ character}})\\
+ (\FU*{CHAR-NOT-LESSP}\RP{\VAR{ character}})\\
+ (\FU*{CHAR-LESSP}\RP{\VAR{ character}})\\
+ (\FU*{CHAR-NOT-GREATERP}\RP{\VAR{ character}})}{\}}}
+ Return \retval{\T} if \VAR{character}s are
+ monotonically decreasing, monotonically non-increasing, monotonically
+ increasing, or monotonically non-decreasing, resp., ignoring case.
+
+ \IT{\arrGOO{(\FU*{CHAR-UPCASE} \VAR{ character})\\
+ (\FU*{CHAR-DOWNCASE} \VAR{ character})}{\}}}
+ Return corresponding uppercase/lowercase \retval{character}, resp.
+
+ \IT{(\kwd*{CHAR-INT} \VAR{character})}
+ Return \retval{integer} encoding \VAR{character}.
+
+ \IT{(\FU*{DIGIT-CHAR} \VAR{i} \Op{\VAR{radix}\DF{10}})}
+ \retval{Character} representing digit \VAR{i}.
+
+ \IT{(\FU*{CHAR-NAME} \VAR{character})}
+ Return \retval{name} of \VAR{character} if there is one, or
+ \retval{\NIL}.
+
+ \IT{(\FU*{NAME-CHAR} \VAR{name})}
+ Return \retval{character} with \VAR{name} if there is one, or
+ \retval{\NIL}.
+
+ \IT{(\FU*{CHAR-CODE} \VAR{character})}
+ Return \retval{code of \VAR{character}}.
+
+ \IT{(\FU*{CODE-CHAR} \VAR{code})}
+ \retval{Character} with \VAR{code}.
+
+ \IT{\CNS*{CHAR-CODE-LIMIT}}
+ Upper bound of (\FU{CHAR-CODE} \VAR{char}).
+
+ \IT{(\FU*{CHARACTER} \VAR{c})}
+ Return \retval{\kwd{\#$\backslash$}\VAR{c}}.
+
+\end{LIST}
+
+
189 clqr-clos.tex
@@ -0,0 +1,189 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{CLOS}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+
+ \IT{(\FU*{NEXT-METHOD-P})}
+ \retval{\T} if enclosing method has a next method.
+
+ \IT{(\SF*{DEFCLASS} \VAR{class-name} (\OPn{\VAR{superclass}})
+ (\GOOs{\VAR{slot}\XOR
+ (\VAR{slot}
+ \orGOO{\Goos{\kwd{:reader} \VAR{reader-fu}}\\
+ \Goos{\kwd{:writer} \VAR{writer-fu}} \\
+ \Goos{\kwd{:accessor} \VAR{reader-fu}} \\
+ \kwd{:allocation} \Goo{\kwd{:instance}\XOR\kwd{:class}}\\
+ \Goos{\kwd{:initarg} \kwd{:}\VAR{arg}} \\
+ \kwd{:initform} \VAR{ form}\\
+ \kwd{:type} \VAR{ type}\\
+ \kwd{:documentation} \VAR{ string}}{\}})})
+
+ \orGOO{(\kwd{:default-initargs} \Goos{\VAR{name}\VAR{ value}})\\
+ (\kwd{:documentation} \VAR{ string})\\
+ (\kwd{:metaclass} \VAR{ name})}{\}})}
+ Define \retval{class \VAR{ class-name}} as a subclass of \VAR{superclass}es.
+
+ \IT{(\SF*{DEFGENERIC}
+ \xorGOO{\VAR{name}\\ (\kwd{setf} \VAR{ name})}{\}}
+ (\OPn{\VAR{var}}%
+ \OP{\kwd*{\&optional} \Goos{\VAR{var}\XOR(\VAR{var})}}
+ \OP{\kwd*{\&rest} \VAR{var}}
+ \OP{\kwd*{\&key} \orGOO{%
+ \VAR{var}\\
+ (\VAR{var}\XOR(\kwd{:}\VAR{key}
+ \VAR{var}))}{\}^{\!\!*}} \Op{\kwd*{\&allow-other-keys}}})
+ \orGOO{%
+ (\kwd{:argument-precendence-order}\RP{\VAR{ arg}})\\
+ (\kwd{declare }\RP{(\kwd{optimize}\OPn{\VAR{ arg}})})\\
+ (\kwd{:documentation} \VAR{ string})\\
+ (\kwd{:generic-function-class} \VAR{ class})\\
+ (\kwd{:method-class} \VAR{ class})\\
+ (\kwd{:method-combination} \VAR{ symbol} \OPn{\VAR{ arg}})\\
+ \OPn{(\kwd{:method} \VAR{ defmethod-symbol} \OPn{\VAR{ defmethod-arg}})}}{\}})}
+ Define \retval{generic function \VAR{name}}.
+
+ \IT{(\FU*{ENSURE-GENERIC-FUNCTION}
+ \xorGOO{\VAR{name}\\ (\kwd{setf} \VAR{ name})}{\}}
+ \orGOO{%
+ \kwd{:argument-precendence-order}\RP{\VAR{ arg}}\\
+ \kwd{:declare}\RP{(\kwd{optimize}\OPn{\VAR{ arg}})}\\
+ \kwd{:documentation} \VAR{ string}\\
+ \kwd{:environment} \VAR{ environment}\\
+ \kwd{:generic-function-class} \VAR{ class}\\
+ \kwd{:lambda-list} \VAR{ lambda-list}\\
+ \kwd{:method-class} \VAR{ class}\\
+ \kwd{:method-combination} \VAR{ symbol} \OPn{\VAR{ arg}}}{\}})}
+ Define or modify \retval{generic function \VAR{name}}.
+
+ \IT{(\SF*{DEFMETHOD}
+ \xorGOO{\VAR{bar}\\ (\kwd{setf} \VAR{ bar})}{\}}
+ \Op{\xorGOO{\kwd{:before}\\
+ \kwd{:after}\\
+ \kwd{:around}}{\}}}
+ (\xorGOO{\VAR{var}\\
+ (\VAR{spec-var} \xorGOO{\VAR{class}\\(\kwd{eql} \VAR{ foo})}{\}})}{\}^{\!\!*}}
+ \OP{\kwd*{\&optional} \Goos{\VAR{var}\XOR(\VAR{var} \OP{\VAR{init}
+ \Op{\VAR{supplied-p}}})}}
+ \Op{\kwd*{\&rest} \VAR{var}}
+ \OP{\kwd*{\&key} \GOos{\VAR{var}\XOR(\Goo{\VAR{var}\XOR(\kwd{:}\VAR{key}
+ \VAR{var})}
+ \OP{\VAR{init}\Op{\VAR{supplied-p}}})}
+ \Op{\kwd*{\&allow-other-keys}}}
+ \OP{\kwd*{\&aux}\Goos{\VAR{var}\XOR(\VAR{var} \Op{\VAR{init}})}})
+ \orGOO{\OPn{(\kwd{declare} \OPn{\VAR{ decl}})}\\
+ \VAR{documentation}}{\}}
+ \OPn{\VAR{form}})}
+ Define \retval{new method} for generic function
+ \VAR{bar}. \VAR{spec-var}s specialize to either being of \VAR{class}
+ or being \kwd{eql} \VAR{foo}, resp. On invocation, \VAR{var}s and
+ \VAR{spec-var}s of the \retval{new method}
+ act like parameters of a function with body \VAR{foo}.
+
+ \IT{(\xorGOO{\GFU*{ADD-METHOD}\\
+ \GFU*{REMOVE-METHOD}}{\}}\VAR{generic-function} \VAR{method})}
+ Add, or remove, resp., \VAR{method} from \retval{\VAR{generic-function}}.
+
+ \IT{(\GFU*{NO-APPLICABLE-METHOD} \VAR{generic-function}
+ \OPn{\VAR{arg}})}
+ Called on invocation of \VAR{generic-function} if there is no applicable method.
+
+ \IT{(\SF*{CALL-METHOD} \orGOO{\VAR{method}\\
+ (\SF*{MAKE-METHOD} \VAR{ form})}{\}}
+ \Op{\VAR{next-methods}})}
+ Call \VAR{method}, return \retval{its values}.
+
+ \IT{(\FU*{CALL-NEXT-METHOD} \Op{\VAR{args}\DF{current args}})}
+ From within a method, call next method with \VAR{args}, return
+ \retval{its values}.
+
+ \IT{(\GFU*{NO-NEXT-METHOD} \VAR{generic-function}
+ \VAR{method} \OPn{\VAR{arg}})}
+ Called on invocation of \kwd{call-next-method} if there is no next method.
+
+ \IT{(\GFU*{MAKE-INSTANCE} \VAR{class} \Goos{\kwd{:}\VAR{initarg}
+ \VAR{value}} \OPn{\kwd{:}\VAR{other-key}})}
+ Make new \retval{instance of \VAR{class}}.
+
+ \IT{(\GFU*{INITIALIZE-INSTANCE} (\VAR{instance}))}
+ Its primary method sets slots on behalf of
+ \GFU*{MAKE-INSTANCE}. Return \retval{instance}.
+
+ \IT{(\GFU*{REINITIALIZE-INSTANCE} \VAR{instance} \OP{\VAR{initargs}
+ \Op{\VAR{other-args}}})}
+ Change local slots of \retval{\VAR{instance}}.
+
+ \IT{(\FU*{SLOT-VALUE} \VAR{instance} \VAR{slot})} Return \retval{value
+ of \VAR{slot} in \VAR{instance}}. \kwd{SETF}able.
+
+ \IT{(\SF*{WITH-SLOTS}(\Goos{\VAR{slot}\XOR(\VAR{var
+ slot})}) \VAR{instance} \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \OPn{\VAR{form}})} Evaluate \VAR{form}s with slots of
+ \VAR{instance} locally visible as \VAR{slot}s or \VAR{var}s.
+
+
+ \IT{(\GFU*{CLASS-NAME} \VAR{class})} \retval{Name of \VAR{class}}.
+
+ \IT{(\kwd*{CLASS-OF} \VAR{foo})} \retval{Class} \VAR{foo} is an
+ instance of.
+
+ \IT{(\kwd*{MAKE-INSTANCES-OBSOLETE} \VAR{class})} Update instances of \VAR{class}.
+
+ \IT{(\GFU*{FUNCTION-KEYWORDS} \VAR{method})}
+ \retval{Keyword parameters} of method.
+
+ \IT{(\GFU*{ALLOCATE-INSTANCE} \VAR{class} \OP{\VAR{initargs}
+ \Op{\VAR{other-args}}})}
+ Return uninitialized \retval{instance} of \VAR{class}.
+
+ \IT{(\SF*{DEFINE-METHOD-COMBINATION} \VAR{name}\orGOO{%
+ \kwd{:documentation} \VAR{ string}\\
+ \kwd{:identity-with-one-argument} \VAR{ bool}\DF{\NIL}\\
+ \kwd{:operator} \VAR{ operator}\DF{\VAR{name}}}{\}})}
+ Define new type \retval{\VAR{name}} of method combination.
+
+ \IT{(\SF*{DEFINE-METHOD-COMBINATION} \VAR{name}\orGOO{%
+ \kwd{:documentation} \VAR{ string}\\
+ \kwd{:identity-with-one-argument} \VAR{ bool}\DF{\NIL}\\
+ \kwd{:operator} \VAR{ operator}\DF{\VAR{name}}}{\}})}
+
+ \IT{(\GFU*{CHANGE-CLASS} \VAR{instance} \VAR{new-class} \Op{\VAR{arg}})}
+ Change class of \retval{\VAR{instance}} to \VAR{new-class}.
+
+ \IT{(\GFU*{UPDATE-INSTANCE-FOR-DIFFERENT-CLASS} \VAR{previous}
+ \VAR{current} \Op{\VAR{initargs}} \Op{\VAR{keyargs}})}
+ Called by \kwd{change-class}.
+
+ \IT{(\GFU*{UPDATE-INSTANCE-FOR-REDEFINED-CLASS} \VAR{instances}
+ \VAR{added-slots} \VAR{discarded-slots} \VAR{property-list
+ \Op{\VAR{initargs}} \Op{\VAR{other-args}}})}
+ Called by \kwd{make-instances-obsolete}.
+
+ \IT{(\GFU*{SHARED-INITIALIZE})}
+
+ \IT{(\GFU*{METHOD-QUALIFIERS} \VAR{method})}
+ List of qualifiers of \VAR{method}.
+
+ \IT{(\GFU*{FIND-METHOD} \VAR{generic-function} \VAR{qualifiers}
+ \VAR{specializers} \Op{\VAR{error}\DF{\T}})}
+ Return suitable \retval{method}, or \retval{\NIL}.
+
+ \IT{(\GFU*{COMPUTE-APPLICABLE-METHODS} \VAR{generic-function}
+ \VAR{args})}
+ \retval{Set of methods} suitable for \VAR{args}.
+
+ \IT{(\kwd*{STANDARD})} Method combination type.
+
+
+\end{LIST}
+
+
309 clqr-compiler.tex
@@ -0,0 +1,309 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Compiler}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Predicates}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{SPECIAL-OPERATOR-P} \VAR{foo})}
+ \retval{\T} if \VAR{foo} is a special operator.
+
+ \IT{(\FU*{COMPILED-FUNCTION-P} \VAR{foo})}
+ \retval{\T} if \VAR{foo} is of type \kwd{compiled-function}.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Compilation}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{COMPILE-FILE} \VAR{path}
+ \orGOO{\kwd{:output-file}\VAR{ out-path}\\
+ \kwd{:verbose} \VAR{ bool}\DF{\kwd{*compile-verbose*}}\\
+ \kwd{:print}\VAR{ bool}\DF{\kwd{*compile-print*}}\\
+ \kwd{:external-format} \VAR{ file-format}\DF{\kwd{:default}}}{\}})}
+ Return \retval{true output path} or \retval{\NIL}, \retvalii{\T}
+ in case of warnings or errors, \retvaliii{\T} in case of warnings
+ or errors excluding style warnings.
+
+ \IT{\arrGOO{\V*{*compile-file-pathname*}\DF{\NIL}\\
+ \V*{*compile-file-truename*}\DF{\NIL}}{\}}}
+ Input file used by \FU{compile-file}.
+
+ \IT{\arrGOO{\V*{*compile-print*}\\
+ \V*{*compile-verbose*}}{\}}}
+ Defaults used in \FU{compile-file}.
+
+ \IT{(\FU*{COMPILE-FILE-PATHNAME} \Op{\kwd{:pathname} \{\VAR{path}})}
+ \retval{Pathname} \FU{COMPILE-FILE} writes to.
+
+ \IT{(\FU*{LOAD} \VAR{path}
+ \orGOO{\kwd{:verbose} \VAR{ bool}\DF{\kwd{*load-verbose*}}\\
+ \kwd{:print} \VAR{ bool}\DF{\kwd{*load-print*}}\\
+ \kwd{:if-does-not-exist} \VAR{ bool}\DF{\T}\\
+ \kwd{:external-format} \VAR{ file-format}\DF{\kwd{:default}}}{\}})}
+ Load source or compiled file. Return \retval{\T} if successful.
+
+ \IT{\arrGOO{\V*{*load-pathname*}\DF{\NIL}\\
+ \V*{*load-truename*}\DF{\NIL}}{\}}}
+ Input file used by \FU{load}.
+
+ \IT{\arrGOO{\V*{*load-print*}\\
+ \V*{*load-verbose*}}{\}}}
+ Defaults used in \FU{load}.
+
+ \IT{(\SF*{EVAL-WHEN} (\orGOO{{\kwd{:compile-toplevel}}\\ \kwd{:load-toplevel}\\
+ \kwd{:execute}}{\}}) \OPn{\VAR{form}})} Evaluate \VAR{form}s returning
+ \retval{value of last \VAR{form}} if \SF{EVAL-WHEN} is in the
+ top-level of a file being compiled, in the top-level of a compiled file being
+ loaded, or anywhere, resp.
+
+ \IT{(\SF*{EVAL-WHEN} (%
+ \orGOO{\kwd{:compile-toplevel}\\
+ \kwd{:load-toplevel}\\
+ \kwd{:execute}}{\}}) \OPn{\VAR{form}})}
+ Evaluate \VAR{form}s returning
+ \retval{value of last \VAR{form}} if \SF{EVAL-WHEN} is in the
+ top-level of a file being compiled, in the top-level of a compiled file being
+ loaded, or anywhere, resp.
+
+ \IT{(\SF*{QUOTE} \VAR{foo})\XOR \kwd{'}\VAR{foo}}
+ Return \retval{unevaluated \VAR{foo}}.
+
+ \IT{(\FU*{GENSYM} \Op{\VAR{x}})}
+ Return fresh symbol \retval{\#:G}\VAR{n}, \VAR{n} from
+ \kwd{*gensym-counter*} which is incremented only in case no \VAR{x} is given.
+
+ \IT{(\FU*{GENTEMP} \OP{\VAR{prefix}\DF{\LIT{T}}
+ \Op{\VAR{package}\DF{\kwd{*package*}}}})}
+ Intern fresh \retval{symbol} in package.
+
+ \IT{(\SF*{MACROEXPAND-1} \VAR{form})}
+ Return \retval{macro expansion of \VAR{form}} and \retval{\T} if
+ \VAR{form} is a macro form.
+ Return \retval{\VAR{form}} and \retval{\NIL} otherwise.
+
+ \IT{(\FU*{COMPILE} \VAR{name} \Op{\VAR{definition}})}
+ Return \retval{compiled function} \VAR{name}, \retvalii{\T} in case
+ of warnings, and \retvaliii{\T} in case of failure.
+
+ \IT{(\SF*{LOAD-TIME-VALUE} \VAR{form}
+ \Op{\VAR{read-only}\DF{\NIL}})}
+ Evaluate \VAR{form} at compile time and treat \retval{its value} as literal
+ at run time.
+
+ \IT{(\SF*{TIME} \OPn{\VAR{form}})}
+ Evaluate \VAR{form}s and print timing information on \V{*trace-output*}.
+ Return \retval{values of \VAR{form}s}.
+
+ \IT{(\SF*{TRACE} \OPn{\VAR{function}})}
+ Cause \VAR{function}s to be traced. With no arguments,
+ return \retval{list of traced functions}.
+
+ \IT{(\SF*{UNTRACE} \OPn{\VAR{function}})}
+ Stop \VAR{function}s, or all currently traced functions from being traced.
+
+ \IT{\V*{*trace-output*}}
+ Stream \kwd{trace}d function and \kwd{time} print their output on.
+
+
+ \IT{(\FU*{SYMBOL-NAME} \VAR{ symbol})}
+ \retval{Name} of \VAR{symbol}.
+
+ \IT{\arrGOO{(\FU*{SYMBOL-FUNCTION} \VAR{ symbol})\\
+ (\FU*{SYMBOL-VALUE} \VAR{ symbol})\\
+ (\FU*{SYMBOL-PLIST} \VAR{ symbol})}{\}}}
+ \retval{Function}, \retval{value}, or \retval{property list}, resp., of \VAR{symbol}. \kwd{setf}able.
+
+ \IT{(\kwd*{COMPILER-MACRO-FUNCTION} \VAR{name}
+ \Op{\VAR{environment}})}
+ \retval{Compiler macro function}. \kwd{setfable}.
+
+ \IT{(\SF*{STEP} \VAR{form})}
+ Step through evaluation of \VAR{form}. Return \retval{values of
+ \VAR{form}}.
+
+ \IT{(\FU*{REQUIRE} \VAR{module} \Op{\VAR{path-list}})}
+ If not in \kwd{*modules*}, try paths in \VAR{path-list} to load
+ module from. Signal \kwd{error} if unsuccessful.
+
+ \IT{(\FU*{PROVIDE} \VAR{module})}
+ If not already there, add \VAR{module} to \kwd{*modules*}.
+
+ \IT{\V*{*modules*}}
+ List of names of modules loaded into Lisp image.
+
+ \IT{(\FU*{SET} \VAR{symbol} \VAR{foo})}
+ Set \VAR{symbol}'s value cell to \retval{\VAR{foo}}.
+
+ \IT{(\GFU*{MAKE-LOAD-FORM} \VAR{foo} \VAR{environment})}
+ Make \retval{one or two forms} enabling \kwd{load} to construct
+ something equvalent to \VAR{foo}.
+
+ \IT{(\FU*{MAKE-LOAD-FORM-SAVING-SLOTS} \VAR{foo}
+ \Op{\kwd{:slot-names} \VAR{slots}} \Op{\kwd{:environment}
+ \VAR{environment}})}
+ Make \retval{two forms} yielding something equvalent to \VAR{foo}
+ but preserving only \VAR{slots}.
+
+ \IT{(\FU*{MAKE-SYMBOL} \VAR{name})}
+ Make fresh, uninterned \retval{symbol \VAR{name}}.
+
+ \IT{(\FU*{COPY-SYMBOL} \VAR{symbol} \Op{\VAR{props}\DF{\NIL}})}
+ Return uninterned \retval{copy of \VAR{symbol}}. If \VAR{props} is
+ \T, the copy has the same value, function, and property list.
+
+ \IT{(\FU*{MAKUNBOUND} \VAR{symbol})}
+ Make \retval{\VAR{symbol}} unbound.
+
+ \IT{(\FU*{INSPECT} \VAR{foo})}
+ Interactively give information about \VAR{foo}.
+
+ \IT{(\FU*{DESCRIBE} \VAR{foo}
+ \Op{\VAR{stream}\DF{\kwd{*standard-output*}}})}
+ Send information about \VAR{foo} to \VAR{stream}.
+
+ \IT{(\GFU*{DESCRIBE-OBJECT} \VAR{foo} \VAR{stream})}
+ Send information about \VAR{foo} to \VAR{stream}. Not to be
+ called by user.
+
+ \IT{(\FU*{DISASSEMBLE} \VAR{function})}
+ Send disassembled representation of \VAR{function} to
+ \kwd{*standard-output*}. Return \retval{\NIL}.
+
+ \IT{\V*{*macroexpand-hook*}}
+ Function called by \kwd{macroexpand-1} to generate macro expansions.
+
+ \IT{(\FU*{MACRO-FUNCTION} \VAR{symbol} \Op{\VAR{environment}})}
+ Return \retval{macro function} if \VAR{symbol}'s function definition
+ is a macro. Return \retval{\NIL} if it is not.
+
+ \IT{(\FU*{EVAL} \VAR{form})}
+ Return \retval{values of \VAR{form}}.
+
+ \IT{\arrGOO{(\FU*{LISP-IMPLEMENTATION-TYPE})\\
+ (\FU*{LISP-IMPLEMENTATION-VERSION})}{\}}}
+ \retval{Name} or \retval{version}, resp., of implementation.
+
+ \IT{\arrGOO{(\FU*{SOFTWARE-TYPE})\\
+ (\FU*{SOFTWARE-VERSION})}{\}}}
+ \retval{Name} or \retval{version}, resp., of host system.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{REPL}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{LIST}{1cm}
+
+ \IT{\Goo{\kwd*{*}\XOR\kwd*{**}\XOR\V*{***}}}
+ Most recent primary result or the two previous primary results,
+ resp., printed in the REPL.
+
+ \IT{\Goo{\kwd*{+}\XOR\kwd*{++}\XOR\V*{+++}}}
+ Forms most recently evaluated in the REPL.
+
+ \IT{\Goo{\kwd*{/}\XOR\kwd*{//}\XOR\V*{///}}}
+ List of most recent results or of the two previous results, resp., printed in the REPL.
+
+ \IT{\kwd*{--}}
+ Form currently being evaluated by the REPL.
+
+ \IT{(\FU*{APROPOS} \VAR{string} \OPn{\VAR{package}})}
+ Print interned symbols containig \VAR{string}.
+
+ \IT{(\FU*{APROPOS-LIST} \VAR{string} \OPn{\VAR{package}})}
+ \retval{List of interned symbols} containig \VAR{string}.
+
+ \IT{(\FU*{DRIBBLE} \VAR{path})}
+ Save a record of interactive session to \VAR{path}.
+
+ \IT{(\FU*{ED} \VAR{arg})}
+ Invoke editor if possible.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Declarations}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{\arrGOO{(\FU*{PROCLAIM} \OPn{\VAR{ decl}})\\
+ (\SF*{DECLAIM} \OPn{\VAR{ decl}})}{\}}}
+ Globally make declarations \VAR{decl}. \VAR{decl} can be:
+ \kwd{declaration},
+ \kwd{ftype},
+ \kwd{inline},
+ \kwd{notinline},
+ \kwd{optimize},
+ \kwd{special}, or
+ \kwd{type}. See below.
+
+ \IT{(\SF*{DECLARE} \OPn{\VAR{decl}})}
+ Inside certain forms, locally make declarations \VAR{decl}. \VAR{decl} can be:
+ \kwd{dynamic-extent},
+ \kwd{ftype},
+ \kwd{ignorable},
+ \kwd{ignore},
+ \kwd{inline},
+ \kwd{notinline},
+ \kwd{optimize},
+ \kwd{special}, or
+ \kwd{type}. See below.
+
+ \IT{(\kwd*{DECLARATION} \OPn{foo})}
+ Make \VAR{foo}s names of declarations.
+
+ \IT{\arrGOO{(\kwd*{INLINE} \OPn{\VAR{ function}})\\
+ (\kwd*{NOTINLINE} \OPn{\VAR{ function}})}{\}}}
+ Tell compiler to integrate/not to integrate, resp., called
+ \VAR{function}s into the calling routine.
+
+ \IT{(\xorGOO{\kwd*{IGNORE}\\
+ \kwd*{IGNORABLE}}{\}}\xorGOO{%
+ \VAR{var}\\
+ (\kwd{function} \VAR{function})}{\}^{\!\!*}})}
+ Suppress warnings about used/unused bindings.
+
+ \IT{\arrGOO{(\kwd*{TYPE} \VAR{ type} \OPn{\VAR{ variable}})\\
+ (\kwd*{FTYPE} \VAR{ type} \OPn{\VAR{ function}})}{\}}}
+ Declare \VAR{variable} or \VAR{function} to be of \VAR{type}.
+
+ \IT{(\kwd*{DYNAMIC-EXTENT} \OPn{\VAR{var}} \OPn{(\kwd{function}
+ \VAR{fu})})}
+ Declare objects referred to by \VAR{var} or \VAR{fu} to have dynamic extent
+
+ \IT{(\kwd*{OPTIMIZE}\orGOO{%
+ \kwd*{COMPILATION-SPEED}\XOR(\kwd*{COMPILATION-SPEED}\VAR{ n})\\
+ \kwd*{DEBUG}\XOR(\kwd*{DEBUG}\VAR{ n})\\
+ \kwd*{SAFETY}\XOR(\kwd*{SAFETY}\VAR{ n})\\
+ \kwd*{SPACE}\XOR(\kwd*{SPACE}\VAR{ n})\\
+ \kwd*{SPEED}\XOR(\kwd*{SPEED}\VAR{ n})}{\}})}
+ Tell compiler how to optimize. $n=0$ means unimportant, $n=1$ is
+ neutral, $n=3$ means important.
+
+ \IT{(\kwd*{SPECIAL} \OPn{\VAR{var}})}
+ Declare \VAR{var}s being dynamic.
+
+
+\end{LIST}
+
+
233 clqr-conditions-and-errors.tex
@@ -0,0 +1,233 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Conditions and Errors}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{figure}
+ \begin{center}
+ \boxGOO{%
+ \kwd*{t}%
+ \boxGOO{%
+ \kwd*{CONDITION}\\
+ \boxGOO{%
+ \kwd*{WARNING}
+ \boxGOO{%
+ \kwd*{STYLE-WARNING}}\\
+ \kwd*{SIMPLE-CONDITION}
+ \boxGOO{%
+ \kwd*{SIMPLE-WARNING}\\
+ \kwd*{SIMPLE-TYPE-ERROR}\\
+ \kwd*{SIMPLE-ERROR}}\\
+ \kwd*{SERIOUS-CONDITION}\\
+ \boxGOO{%
+ \kwd*{ERROR}
+ \boxGOO{%
+ \kwd*{CELL-ERROR}
+ \boxGOO{%
+ \kwd*{UNBOUND-VARIABLE}\\
+ \kwd*{UNBOUND-SLOT}\\
+ \kwd*{UNDEFINED-FUNCTION}}\\
+ \kwd*{STREAM-ERROR}
+ \boxGOO{%
+ \kwd*{END-OF-FILE}\\
+ \kwd*{PARSE-ERROR}\footnotemark[2]
+ \boxGOO{\kwd*{READER-ERROR}}}\\
+ \kwd*{PARSE-ERROR}\footnotemark[2]\\
+ \kwd*{ARITHMETIC-ERROR}\\
+ \boxGOO{%
+ \kwd*{DIVISION-BY-ZERO}\\
+ \kwd*{FLOATING-POINT-INEXACT}\\
+ \kwd*{FLOATING-POINT-INVALID-OPERATION}\\
+ \kwd*{FLOATING-POINT-OVERFLOW}\\
+ \kwd*{FLOATING-POINT-UNDERFLOW}}\\
+ \kwd*{PROGRAM-ERROR}\\
+ \kwd*{CONTROL-ERROR}\\
+ \kwd*{PACKAGE-ERROR}\\
+ \kwd*{TYPE-ERROR}\\
+ \kwd*{FILE-ERROR}\\
+ \kwd*{PRINT-NOT-READABLE}}\\
+ \kwd*{STORAGE-CONDITION}}}}}\\
+ \end{center}\vspace{-1em}
+{\footnotesize\footnotemark[2]Multiply defined}
+ \caption{Condition Types.}%
+\end{figure}
+
+\begin{LIST}{1cm}
+ \IT{(\SF*{DEFINE-CONDITION} \VAR{name} (\OPn{\VAR{parent}})
+ (\GOOs{\VAR{slot}\XOR
+ (\VAR{slot}
+ \orGOO{\Goos{\kwd{:reader} \VAR{reader-fu}}\\
+ \Goos{\kwd{:writer} \VAR{writer-fu}} \\
+ \Goos{\kwd{:accessor} \VAR{reader-fu}} \\
+ \kwd{:allocation} \Goo{\kwd{:instance}\XOR\VAR{class}}\\
+ \Goos{\kwd{:initarg} \kwd{:}\VAR{arg}}\\
+ \kwd{:initform} \VAR{ form}\\
+ \kwd{:type} \VAR{ type}}{\}})})
+ \orGOO{(\kwd{:default-initargs} \Goos{\VAR{name} \VAR{value}})\\
+ ({\kwd{:documentation} \VAR{ string}})\\
+ (\kwd{:report} \VAR{ report-name})}{\}})}
+ Define new condition type \retval{name}.
+
+ \IT{(\FU*{MAKE-CONDITION} \VAR{type} \OPn{\VAR{other-arg}})} Return
+ \retval{new condition of \VAR{type}}.
+
+ \IT{(\FU*{ERROR} \VAR{message} \OPn{\VAR{other-arg}})}
+ Signal \kwd{simple-error} to debugger unless error is handled.
+
+ \IT{(\FU*{CERROR} \VAR{control} \VAR{datum} \OPn{arg})}
+ Signal correctable \kwd{simple-error} to debugger unless error is
+ handled. Show \kwd{format} \VAR{control} with the debugger's
+ continue option.
+
+ \IT{(\FU*{WARN} \VAR{message} \OPn{\VAR{other-arg}})}
+ Signal a warning. Return \retval{\NIL}.
+
+ \IT{(\SF*{HANDLER-CASE} \VAR{test}
+ \OPn{(\VAR{type} (\VAR{condition-var})
+ \OPn{(\kwd{declare} \OPn{\VAR{decl}})} \OPn{\VAR{condition-form}})}
+ \Op{\kwd{:no-error} \OPn{\VAR{fu-arg}} \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \OPn{\VAR{form}}})}
+ If, on evaluation of \VAR{test}, a condition of \VAR{type} is
+ signalled, return \retval{values of matching \VAR{condition-form}s}
+ with \VAR{condition-var} bound to the condition. Without a condition, bind
+ \VAR{fu-arg}s to values of \VAR{test} and return \retval{value of
+ \VAR{form}s} or, without a \kwd{:no-error} clause, return
+ \retval{value of \VAR{test}}. See p.\ \pageref{section:Functions}
+ for \OPn{\VAR{fu-arg}}.
+
+ \IT{(\kwd*{HANDLER-BIND} (\OPn{(\VAR{condition-type}
+ \VAR{handler})}) \OPn{\VAR{form}})}
+ Evaluate \VAR{form}s with \VAR{condition-type}s dynamically bound to
+ their respective\VAR{handler}. Return \retval{values of \VAR{form}s}.
+
+ \IT{\arrGOO{(\FU*{INVOKE-RESTART} \VAR{ foo} \OPn{\VAR{ arg}})\\
+ (\FU*{INVOKE-RESTART-INTERACTIVELY} \VAR{ restart})}{\}}}
+ Call function associated with \VAR{restart} with arguments given or
+ prompted for, resp. If restart function returns, return \retval{its values}.
+
+ \IT{(\xorGOO{\FU*{COMPUTE-RESTARTS}\\
+ \FU*{FIND-RESTART} \VAR{ name}}{\}} \Op{\VAR{condition}})}
+ Return list of \retval{all restarts}, or innermost \retval{restart}
+ \VAR{name}, resp., out of those either associated
+ with \VAR{condition} or un-associated at all; or, without
+ \VAR{condition}, out of all restarts. Return \retval{\NIL} if search
+ is unsuccessful.
+
+ \IT{(\xorGOO{\FU*{ABORT}\\
+ \FU*{MUFFLE-WARNING}\\
+ \FU*{CONTINUE}\\
+ \FU*{STORE-VALUE} \VAR{ value}\\
+ \FU*{USE-VALUE} \VAR{ value}}{\}} \Op{\VAR{condition}})}
+ Transfer control to innermost applicable restart with same name
+ (i.e. \kwd{abort}, \ldots, \kwd{continue} \ldots) out of those either associated
+ with \VAR{condition} or un-associated at all; or, without
+ \VAR{condition}, out of all restarts. If no restart is found,
+ signal \kwd{control-error} for \FU{abort} and \FU{muffle-warning},
+ or return \retval{\NIL} for the rest.
+
+ \IT{(\FU*{UNWIND-PROTECT} \VAR{protected-form} \VAR{cleanup-form})}
+ Evaluate \VAR{protected-form} and then, no matter how control leaves \VAR{protected-form}, \VAR{cleanup-form}. Return \retval{value of \VAR{protected-form}}.
+
+ \IT{(\kwd*{CHECK-TYPE}
+ \VAR{place} \VAR{type})} Return \retval{\NIL} and signal correctable error if \VAR{place} is not of {type}.
+
+ \IT{(\SF*{WITH-CONDITION-RESTARTS} \VAR{condition-form}
+ \VAR{restarts-form} \OPn{\VAR{form}})}
+ Evaluate \VAR{form}s with restarts yielded from \VAR{restart-form}
+ dynamically associated with condition yielded from
+ \VAR{condition-form}. Return values of \VAR{form}s.
+
+ \IT{(\SF*{WITH-SIMPLE-RESTART} (\VAR{restart} \VAR{control}
+ \OPn{\VAR{arg}}) \OPn{\VAR{form}})}
+ If \VAR{restart} is not called from \VAR{form}s, return
+ \retval{values of last \VAR{form}}. Otherwise return \retval{\NIL}
+ and \retval{\T} and report restart using \kwd{format} \VAR{control}
+ and \VAR{arg}s (see p.\ \pageref{section:Format}).
+ \IT{(\FU*{UNBOUND-SLOT-INSTANCE} \VAR{condition})} \retval{Instance} with unbound slot which caused \VAR{condition}.
+
+ \IT{(\SF*{RESTART-CASE} \VAR{test} \OPn{(\VAR{name} \OPn{\VAR{fu-arg}}%
+ \orGOO{\kwd{:interactive}
+ \VAR{ form}\\
+ \kwd{:report} \VAR{ form}\\
+ \kwd{:test} \VAR{ form}}{\}} \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \OPn{form})})}
+ Evaluate \VAR{test} with new restarts \VAR{name}. Return
+ \retval{value of \VAR{test}} or, if any of the restarts is invoked,
+ return \retval{value of its last \VAR{form}}.
+ For \VAR{fu-arg}s see p.\ \pageref{section:Functions}.
+
+ \IT{(\SF*{RESTART-BIND} (\OPn{(\VAR{restart}
+ \VAR{restart-function}\orGOO{\kwd{:interactive-function}
+ \VAR{ function}\\
+ \kwd{:report-function} \VAR{ function}\\
+ \kwd{:test-function} \VAR{ function}}{\}})}) \OPn{\VAR{form}})}
+ Return \retval{value of \VAR{form}s} evaluated with \VAR{restart}s
+ dynamically bound to \VAR{restart-function}s.
+
+ \IT{(\FU*{RESTART-NAME} \VAR{restart})}
+ \retval{Name of \VAR{restart}}.
+
+ \IT{(\xorGOO{(\FU*{INVALID-METHOD-ERROR} \VAR{ method}\\
+ \FU*{METHOD-COMBINATION-ERROR})}{\}}%
+ \VAR{control} \OPn{\VAR{arg}})}
+ Signal \kwd{error} on applicable method, or on method combination,
+ with invalid qualifiers. See p.\ \pageref{section:Format}.
+
+ \IT{(\FU*{INVOKE-DEBUGGER} \VAR{condition})}
+ Invoke debugger with \VAR{condition}.
+
+ \IT{\V*{*debugger-hook*}\DF{\NIL}} Function of condition and
+ function itself.
+
+ \IT{(\FU*{CELL-ERROR-NAME} \VAR{condition})}
+ \retval{Name of cell} which caused \VAR{condition}.
+
+ \IT{(\SF*{ASSERT} \VAR{test} \OP{(\OPn{\VAR{place}})\Op{\VAR{datum}
+ \OPn{\VAR{arg}}})}}
+ Signal correctable error denoted by \VAR{datum} and \VAR{arg}s if \VAR{test}, which may depend on
+ \VAR{place}s, returns \NIL. Return \retval{\NIL}.
+
+ \IT{\arrGOO{(\FU*{TYPE-ERROR-DATUM} \VAR{ condition})\\
+ (\FU*{TYPE-ERROR-EXPECTED-TYPE} \VAR{ condition})}{\}}}
+ \retval{Datum} which caused \VAR{condition}, or its expected type, resp.
+
+ \IT{(\FU*{SIGNAL} \VAR{datum} \OPn{\VAR{arg}})}
+ Signal condition denoted by \VAR{datum} and \VAR{arg}s. Return \retval{\NIL}.
+
+ \IT{(\FU*{ARITHMETIC-ERROR-OPERANDS} \VAR{condition})}
+ \retval{List of operands} used in signalling operation.
+
+ \IT{(\FU*{ARITHMETIC-ERROR-OPERATION} \VAR{condition})}
+ \retval{Function} used in signalling operation.
+
+ \IT{(\FU*{PACKAGE-ERROR-PACKAGE} \VAR{condition})}
+ \retval{Package} which caused \VAR{condition}.
+
+ \IT{(\FU*{FILE-ERROR-PATHNAME} \VAR{condition})}
+ \retval{Path} which caused condition.
+
+ \IT{(\FU*{STREAM-ERROR-STREAM} \VAR{condition})}
+ \retval{Stream} which caused \VAR{condition}.
+
+ \IT{\arrGOO{(\FU*{SIMPLE-CONDITION-FORMAT-CONTROL} \VAR{ condition})\\
+ (\FU*{SIMPLE-CONDITION-FORMAT-ARGUMENTS} \VAR{ condition})}{\}}}
+ Return \retval{\kwd{format} control} or list of \retval{\kwd{format}
+ arguments}, resp., of \VAR{condition}.
+
+ \IT{(\SF*{IGNORE-ERRORS} \OPn{\VAR{form}})}
+ Return \retval{values of \VAR{form}s} or, in case of \kwd{error}s,
+ \retval{\NIL} and the \retvalii{condition}.
+
+ \IT{\V*{*break-on-signals*}\DF{\NIL}}
+ Condition debugger is to be invoked on.
+
+\end{LIST}
+
274 clqr-conses.tex
@@ -0,0 +1,274 @@
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Conses}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Predicates}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{\arrGOO{(\FU*{CONSP} \VAR{ foo})\\
+ (\FU*{LISTP} \VAR{ foo})}{\}}}
+ Return \retval{\T} if \VAR{foo} is either \T\ or a cons/list.
+
+ \IT{(\FU*{ENDP} \VAR{list})}
+ Return \retval{\T} if \VAR{list} is \LIT{()}.
+
+ \IT{(\FU*{ATOM} \VAR{foo})} Return \retval{\T} if \VAR{foo} is not a cons.
+
+ \IT{(\FU*{NULL} \VAR{foo})} Return \retval{\T} when \VAR{foo} is \NIL.
+
+ \IT{(\FU*{TAILP} \VAR{foo} \VAR{list})}
+ Return \retval{\T} if \VAR{foo} is a tail of \VAR{list}. Return \retval{\NIL} otherwise.
+
+ \IT{(\xorGOO{\FU*{MEMBER}\\\FU*{MEMBER-IF}\kwd{
+ \#'}\VAR{predicate}\\\FU*{MEMBER-IF-NOT}\kwd{ \#'}\VAR{predicate}}{\}}
+ \VAR{foo} \VAR{list}
+ \orGOO{\kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}\\
+ \kwd{:key} \VAR{ function}}{\}})}
+ Return \retval{tail of \VAR{list}} starting with
+ first element of list matching \VAR{foo}. Return \retval{\NIL} otherwise.
+
+ \IT{(\FU*{SUBSETP} \VAR{foo-list} \VAR{bar-list}
+ \orGOO{\kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}\\
+ \kwd{:key} \VAR{ function}}{\}})}
+ Return \retval{\T} if \VAR{foo-list} is a subset of
+ \VAR{bar-list}. Return \retval{\NIL} otherwise.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Lists}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{CONS} \VAR{foo} \VAR{bar})}
+ Return \retval{new cons (\VAR{foo} \VAR{bar})}.
+
+ \IT{(\FU*{LIST} \OPn{\VAR{foo}})} Return \retval{list of \VAR{foo}s}.
+
+ \IT{(\FU*{LIST*} \RP{\VAR{foo}})} Return \retval{list of \VAR{foo}s}
+ with last \VAR{foo} becoming cdr of last cons. Return
+ \retval{\VAR{foo}} if only one \VAR{foo} given.
+
+ \IT{(\FU*{MAKE-LIST} \VAR{num} \Op{\kwd{:initial-element}
+ \VAR{foo}\DF{\NIL}})} Return \retval{list with \VAR{num} elements}
+ set to \VAR{foo}.
+
+ \IT{(\FU*{LIST-LENGTH} \VAR{list})} \retval{Length} of \VAR{list};
+ \retval{\NIL} for circular \VAR{list}.
+
+ \IT{(\FU*{CAR} \VAR{ foo})}
+ \retval{car of list \VAR{foo}} or \retval{\NIL} if \VAR{foo} is
+ \NIL. \kwd{SETF}able.
+
+ \IT{\arrGOO{(\FU*{CDR} \VAR{ foo})\\
+ (\FU*{REST} \VAR{ foo})}{\}}}
+ \retval{cdr of list \VAR{foo}} or \retval{\NIL} if \VAR{foo}
+ is \NIL. \kwd{SETF}able.
+
+ \IT{(\Goo{\FU*{FIRST}\XOR\FU*{SECOND}\XOR\FU*{THIRD}\XOR\dots\XOR\FU*{NINTH}\XOR\FU*{TENTH}}
+ \VAR{foo})}
+ \index{FOURTH}%
+ \index{FIFTH}%
+ \index{SIXTH}%
+ \index{SEVENTH}%
+ \index{EIGHTH}%
+ Return \retval{nth element of list \VAR{foo}} if any,
+ or \retval{\NIL} otherwise. \kwd{SETF}able.
+
+ \IT{(\FU{C}\VAR{X}\kwd{R} \VAR{foo})}
+ \index{CAAR}
+ \index{CADR}
+ \index{CDAR}
+ \index{CDDR}
+ With \VAR{X} being one to four
+ \kwd{a}s and \kwd{d}s representing \FU{CAR}s and \FU{CDR}s, e.g.
+ (\FU{CADR} \VAR{bar}) is equivalent to (\FU{CAR} (\FU{CDR}
+ \VAR{bar})).
+ \kwd{SETF}able.
+
+ \IT{(\FU*{LAST} \VAR{foo} \Op{\VAR{num}})}
+ Return list of \retval{last \VAR{num}
+ conses} of list \VAR{foo}.
+
+ \IT{(\xorGOO{\FU*{BUTLAST}\\\FU*{NBUTLAST}}{\}} \VAR{foo} \Op{\VAR{num}})}
+ Return \retval{list excluding last \VAR{num}
+ conses} of list \VAR{foo}.
+
+ \IT{(\xorGOO{\FU*{RPLACA}\\
+ \FU*{RPLACD}}{\}} \VAR{cons} \VAR{object})}
+ Replace car, or cdr, resp., of \retval{\VAR{cons}} with \VAR{object}.
+
+ \IT{(\FU*{LDIFF} \VAR{list} \VAR{foo})}
+ If \VAR{foo} is a tail of \VAR{list}, return \retval{preceding
+ part of \VAR{list}}. Otherwise return \retval{\VAR{list}}.
+
+ \IT{(\kwd*{NTH} \VAR{n list})} Return \VAR{n}th element (zero-based) of \VAR{list}.
+
+ \IT{(\kwd*{NTHCDR} \VAR{n list})} Return \retval{tail of \VAR{list}} after calling \kwd{cdr} \VAR{n} times.
+
+ \IT{(\FU*{ADJOIN} \VAR{foo} \VAR{list} \orGOO{\kwd{:test}
+ \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}\\
+ \kwd{:key} \VAR{ function}}{\}})} Return \retval{\VAR{list}} if \VAR{foo} is
+ already member of \VAR{list}. If not, return \retval{(\kwd{CONS}
+ \VAR{foo} \VAR{list})}.
+
+ \IT{(\FU*{POP} \VAR{place})}
+ Set \VAR{place} to \retval{(\kwd{CDR} \VAR{place})}, return
+ \retval{(\kwd{CAR} \VAR{place})}
+
+ \IT{(\FU*{PUSH} \VAR{foo} \VAR{place})} Set \VAR{place} to
+ \retval{(\kwd{cons} \VAR{foo} \VAR{place})}.
+
+ \IT{(\FU*{PUSHNEW} \VAR{foo} \VAR{place} )} Set \VAR{place} to
+ \retval{(\kwd{adjoin} \VAR{foo} \VAR{place})}.
+
+ \IT{\arrGOO{(\FU*{APPEND} \OPn{\VAR{ list}})\\(\FU*{NCONC} \OPn{\VAR{ list}})}{\}}}
+ Return \retval{concatenated list}. \VAR{list}s are unmodified/possibly
+ modified, resp.
+
+ \IT{\arrGOO{(\FU*{REVAPPEND} \VAR{ list} \VAR{ foo})\\(\FU*{NRECONC}
+ \VAR{ list} \VAR{ foo})}{\}}}
+ Return \retval{concatenated list} after reversing order in
+ \VAR{list}. \VAR{list} is unmodified/possibly
+ modified, resp.
+
+ \IT{(\xorGOO{\FU*{MAPCAR}\\\FU*{MAPLIST}}{\}} \kwd{\#'}\VAR{function} \RP{\VAR{list}})}
+ Return
+ \retval{list of return values} of
+ \VAR{function} successively invoked with corresponding arguments,
+ either cars or cdrs, resp.,
+ from each list.
+
+ \IT{(\xorGOO{\FU*{MAPCAN}\\\FU*{MAPCON}}{\}} \kwd{\#'}\VAR{function} \RP{\VAR{list}})}
+ Return list of
+ \retval{concatenated return values} of
+ \VAR{function} successively invoked with corresponding arguments,
+ either cars or cdrs, resp.,
+ from each list. \VAR{function} should return a list.
+
+ \IT{(\xorGOO{\FU*{MAPC}\\\FU*{MAPL}}{\}} \kwd{\#'}\VAR{function} \RP{\VAR{list}})}
+ Return
+ \retval{first \VAR{list}} after successively applying
+ \VAR{function} to corresponding arguments,
+ either cars or cdrs, resp.,
+ from each list. \VAR{function} should have some side effects.
+
+ \IT{(\FU*{COPY-LIST} \VAR{list})}
+ Return \retval{copy} of \VAR{list}.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Association Lists}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\label{section:Association Lists}
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{PAIRLIS} \VAR{keys} \VAR{values})}
+ Make \retval{association list} from lists \VAR{keys} and \VAR{values}.
+
+ \IT{(\FU*{ACONS} \VAR{key} \VAR{datum} \VAR{a-list})}
+ Return \retval{\VAR{a-list}} with a (\VAR{key} . \VAR{value}) pair added.
+
+ \IT{\arrGOO{(\xorGOO{\FU*{ASSOC}\\
+ \FU*{RASSOC}}{\}}%
+ \VAR{foo} \VAR{ a-list}%
+ \xorGOO{\kwd{:key} \VAR{ function}\\
+ \kwd{:test} \VAR{ test}\\
+ \kwd{:test-not} \VAR{ test}
+ }{\}})\\
+ (\xorGOO{\FU*{ASSOC-IF}\\
+ \FU*{RASSOC-IF}\\
+ \FU*{ASSOC-IF-NOT}\\
+ \FU*{RASSOC-IF-NOT}}{\}}\VAR{test} \VAR{ a-list}%
+ \Op{\kwd{:key} \VAR{ function}})}{\}}}
+ First \retval{cons} whose car, or cdr, resp., satisfies \VAR{test}.
+
+ \IT{(\FU*{COPY-ALIST} \VAR{a-list})}
+ Return \retval{copy} of \VAR{a-list}.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Trees}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{TREE-EQUAL} \VAR{foo} \VAR{bar}
+ \orGOO{\kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}}{\}})}
+ Return \retval{\T} if trees \VAR{foo} and \VAR{bar} have same
+ shape and \kwd{eql} leaves, return \retval{\NIL} otherwise.
+
+ \IT{(\xorGOO{\FU*{SUBST}\\\FU*{NSUBST}}{\}} \VAR{new} \VAR{old} \VAR{tree}
+ \orGOO{\kwd{:key} \VAR{ function}\\
+ \kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}}{\}})}
+ Make \retval{copy of
+ \VAR{tree}} with all subtrees or leaves of \VAR{old} replaced by
+ \VAR{new}. \VAR{tree} is unmodified/possibly modified, resp.
+
+ \IT{(\xorGOO{\FU{SUBST-IF\Op{-NOT}}\\\FU{NSUBST-IF\Op{-NOT}}}{\}}
+ \VAR{new} \VAR{test} \VAR{tree}
+ \Op{\kwd{:key} \VAR{function}})}
+ \index{SUBST-IF}%
+ \index{SUBST-IF-NOT}%
+ \index{NSUBST-IF}%
+ \index{NSUBST-IF-NOT}%
+ Make \retval{copy of
+ \VAR{tree}} with all subtrees or leaves
+ satisfying test or not satisfying test, resp., replaced by
+ \VAR{new}. \VAR{sequence} is unmodified/possibly modified, resp.
+
+ \IT{(\xorGOO{\FU*{SUBLIS}\\
+ \FU*{NSUBLIS}}{\}}\VAR{a-list} \VAR{tree}\orGOO{%
+ \kwd{:key} \VAR{ function}\\
+ \kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}}{\}})}
+ Make \retval{copy of \VAR{tree}} with all subtrees or leaves matching
+ a key in \VAR{a-list} replaced by that key's object from \VAR{a-list}.
+ \VAR{sequence} is unmodified/possibly modified, resp.
+
+ \IT{(\FU*{COPY-TREE} \VAR{tree})}
+ Return \retval{copy of \VAR{tree}}.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Sets}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\xorGOO{\Goo{\FU*{UNION}\XOR\FU*{NUNION}}\\
+ \Goo{\FU*{INTERSECTION}\XOR\FU*{NINTERSECTION}}\\
+ \Goo{\FU*{SET-DIFFERENCE}\XOR\FU*{NSET-DIFFERENCE}}\\
+ \Goo{\FU*{SET-EXCLUSIVE-OR}\XOR\FU*{NSET-EXCLUSIVE-OR}}}{\}}
+ \VAR{a} \VAR{b}
+ \orGOO{\kwd{:test} \VAR{ function}\\
+ \kwd{:test-not} \VAR{ function}\\
+ \kwd{:key} \VAR{ function}}{\}})}
+ Return \retval{$a\cup b$}, \retval{$a\cap b$}, \retval{$a\setminus b$}, or
+ \retval{$a\,\triangle\, b$}, resp., of lists \VAR{a} and \VAR{b}. Work
+ non-destructively/destructively, resp.
+
+\end{LIST}
+
+
818 clqr-control-structure.tex
@@ -0,0 +1,818 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Control Structure}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Predicates}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\FU*{EQ} \VAR{foo bar})}
+ \retval{\T} if \VAR{foo} and \VAR{bar} are identical.
+
+ \IT{(\FU*{EQL} \VAR{foo bar})}
+ \retval{\T} if \VAR{foo} and \VAR{bar}
+ are identical, or are the same character, or are the same number.
+
+ \IT{(\FU*{EQUAL} \VAR{foo bar})}
+ \retval{\T} if \VAR{foo} and \VAR{bar}
+ are \FU{EQL}, or are conses with \FU{equal} cars and cdrs, or are
+ strings or bit-vectors with \FU{eql} elements, or are equivalent pathnames.
+
+ \IT{(\FU*{EQUALP} \VAR{foo bar})}
+ \retval{\T} if \VAR{foo} and \VAR{bar}
+ are \FU{EQUAL}, or if they have corresponding components of the same
+ type which are \kwd{equalp}.
+
+ \IT{(\FU*{CONSTANTP} \VAR{foo} \Op{\VAR{environment}})}
+ \retval{\T} if \VAR{foo} is a constant form.
+
+ \IT{(\FU*{NOT} \VAR{bool})}
+ Return \retval{\NIL} if \VAR{bool} is \T, return \retval{\T} if \VAR{bool} is \NIL.
+
+ \IT{(\FU*{FUNCTIONP} \VAR{foo})}
+ \retval{\T} if \VAR{foo} is of type \kwd{function}.
+
+ \IT{(\FU*{FBOUNDP} \VAR{foo})}
+ \retval{\T} if \VAR{foo} is the name of a global function or macro..
+
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Variables}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{LIST}{1cm}
+
+ \IT{(\kwd*{DEFVAR} \VAR{name} \Op{\VAR{value} \Op{\VAR{documentation}}} )} Unless bound
+ already, assign \VAR{value} to dynamic variable \retval{\VAR{name}}.
+
+ \IT{(\kwd*{DEFPARAMETER} \VAR{name} \VAR{value} \Op{\VAR{documentation}} )} Assign
+ \VAR{value} to dynamic variable \retval{\VAR{name}}.
+
+ \IT{(\kwd*{DEFCONSTANT} \VAR{name} \VAR{value} \Op{\VAR{documentation}} )} Assign
+ \VAR{value} to global constant \retval{\VAR{name}}.
+
+ \IT{(\FU*{VALUES-LIST} \VAR{list})}
+ Return \retval{elements of \VAR{list}}.
+
+ \IT{(\FU*{VALUES} \OPn{\VAR{foo}})}
+ Return \retval{\VAR{foo}s as multiple values.} \kwd{setf}able.
+
+ \IT{(\FU*{MULTIPLE-VALUE-LIST} \OPn{\VAR{form}})} Return \retval{values
+ of \VAR{form}s}.
+
+ \IT{(\FU*{NTH-VALUE} \VAR{n} \VAR{form})}
+ \retval{\VAR{n}th return value} of \VAR{form}.
+
+ \IT{(\xorGOO{\SF*{SETQ}\\\SF*{PSETQ}}{\}} \Goos{\VAR{symbol}
+ \VAR{value}})}
+ Set \VAR{symbol}s to \retval{\VAR{value}s}, resp. Work sequentially/in
+ parallel, resp.
+
+ \IT{(\xorGOO{\SF*{SETF}\\\SF*{PSETF}}{\}} \Goos{\VAR{place}
+ \VAR{value}})}
+ Set \VAR{place}s to \retval{\VAR{value}s}, resp. Work sequentially/in
+ parallel, resp.
+
+ \IT{(\SF*{ROTATEF} \OPn{\VAR{place}})} Rotate values of \VAR{place}s left,
+ old first becoming new last \VAR{place}. Return \retval{\NIL}.
+
+ \IT{(\kwd*{MULTIPLE-VALUE-SETQ})}
+
+ \label{:property_lists}
+ \IT{(\SF*{SHIFTF} \RP{\VAR{place}} \VAR{foo})} Store \VAR{foo} in
+ rightmost \VAR{place} shifting values of \VAR{place}s left, returning
+ \retval{first \VAR{place}}.
+
+ \IT{\arrGOO{(\FU*{REMPROP} \VAR{ symbol} \VAR{ key})
+ (\SF*{REMF} \VAR{ place} \VAR{ key})}{\}}}
+ Remove fist entry \VAR{key} from property list stored in
+ \VAR{symbol}/in \VAR{place}, resp. Return \retval{\T} if \VAR{key}
+ was there, or \retval{\NIL} otherwise.
+
+ \IT{\arrGOO{(\FU*{GET} \VAR{ symbol} \VAR{ key} \OP{\VAR{ default}\DF{\NIL}})\\
+ (\FU*{GETF} \VAR{ place} \VAR{ key} \OP{\VAR{
+ default}\DF{\NIL}})}{\}}}
+ \retval{First entry \VAR{key}} from property list stored in
+ \VAR{symbol}/in \VAR{place}, resp., or \retval{\VAR{default}} if
+ there was no \VAR{key}. \kwd{setf}able.
+
+ \IT{(\FU*{GET-PROPERTIES} \VAR{plist} \VAR{key-list})}
+ Return \retval{Key} and \retvalii{value} of first entry from \VAR{plist}
+ matching a key from \VAR{key-list}, and \retvaliii{tail of
+ \VAR{plist}} starting with \VAR{key}. Return \retval{\NIL},
+ \retvalii{\NIL}, and \retvaliii{\NIL} if there was no \VAR{key}.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Functions}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\label{section:Functions}
+
+
+Below, lambda list \OPn{\VAR{fu-arg}} has the form
+(\OPn{\VAR{var}}
+\OP{\kwd*{\&optional} \Goos{\VAR{var}\XOR(\VAR{var} \OP{\VAR{init}
+ \Op{\VAR{supplied-p}}})}}
+\Op{\kwd*{\&rest} \VAR{var}}
+\OP{\kwd*{\&key} \GOos{\VAR{var}\XOR(\Goo{\VAR{var}\XOR(\kwd{:}\VAR{key}
+ \VAR{var})}
+ \OP{\VAR{init}\Op{\VAR{supplied-p}}})}
+ \Op{\kwd*{\&allow-other-keys}}}
+\OP{\kwd*{\&aux}\Goos{\VAR{var}\XOR(\VAR{var} \Op{\VAR{init}})}}
+). \VAR{supplied-p} is \T\ if there is a corresponding argument.
+
+\begin{LIST}{1cm}
+
+ \IT{(\xorGOO{\SF*{DEFUN} \VAR{ foo}\\ \SF*{LAMBDA}}{\}}
+ (\VAR{\OPn{fu-arg}}) \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \Op{\VAR{documentation}}
+ \OPn{\VAR{form}})}
+ Define function with \retval{name \VAR{foo}} or an anonymous
+ function, resp., which
+ applies \VAR{form}s to \VAR{fu-arg}s.
+
+ \IT{(\xorGOO{\SF*{FLET}\\ \SF*{LABELS}}{\}}%
+ (\OPn{(\VAR{name}
+ (\OPn{\VAR{fu-arg}})
+ \OPn{(\kwd{declare} \OPn{\VAR{local-decl}})}%
+ \Op{\VAR{documentation}}
+ \OPn{\VAR{local-form}})})\OPn{(\kwd{declare} \VAR{decl})}
+ \OPn{\VAR{form}})}
+ Evaluate \VAR{form}s with
+ locally defined functions \OPn{\VAR{name}}. Only for \SF{LABELS},
+ \VAR{name}s are visible inside \VAR{local-forms}. Return
+ \retval{values of \VAR{form}s}.
+
+ \IT{(\SF*{FUNCTION} \VAR{foo})} Return \retval{function named \VAR{foo}}.
+
+ \IT{(\FU*{APPLY} \VAR{function} \RP{\VAR{arg}})}
+ Return \retval{value of \VAR{function}} called with
+ \VAR{arg}s. Last \VAR{arg} must be a list.
+
+ \IT{(\FU*{FUNCALL} \VAR{function} \OPn{arg})}
+ Return \retval{value of \VAR{function}} called with \VAR{arg}s.
+
+ \IT{(\SF*{MULTIPLE-VALUE-CALL} \VAR{foo} \OPn{\VAR{form}})} Call function
+ \VAR{foo} with values of \VAR{form}s as its arguments. Return
+ \retval{values returned by \VAR{foo}}.
+
+ \IT{(\FU*{COMPLEMENT} \VAR{function})}
+ Return \retval{new function} with same arguments and same side effects
+ as \VAR{function}, but with complementary truth value.
+
+ \IT{(\FU*{CONSTANTLY} \VAR{foo})}
+ Return \retval{function} returning \VAR{foo}.
+
+ \IT{(\FU*{IDENTITY} \VAR{foo})}
+ Return \VAR{foo}.
+
+ \IT{(\FU*{FUNCTION-LAMBDA-EXPRESSION} \VAR{function})}
+ If available, return \retval{Lambda expression} of \VAR{function},
+ \retvalii{\NIL} if \VAR{function} was
+ defined in null environment, and \retvaliii{name} of \VAR{function}.
+
+ \IT{(\FU*{FDEFINITION} \VAR{foo})}
+ \retval{Definition} of function \VAR{foo}. \kwd{setf}able.
+
+ \IT{(\FU*{FMAKUNBOUND} \VAR{name})}
+ Remove global function or macro definition \retval{\VAR{name}}.
+
+ \IT{\arrGOO{\CNS*{CALL-ARGUMENTS-LIMIT}\\
+ \CNS*{LAMBDA-PARAMETERS-LIMIT}}{\}}}
+ Upper bound of the number of function arguments or lambda list parameters, resp.; $>=50$.
+
+ \IT{\CNS*{MULTIPLE-VALUES-LIMIT}}
+ Upper bound of the number of values a function can return; $>20$.
+
+\end{LIST}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Macros}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Below, macro lambda list \OPn{\VAR{macro-arg}} has the form of either
+(\Op{\kwd*{\&whole} \VAR{var}}%
+\Op{\kwd*{\&environment} \VAR{var}}
+\OPn{\VAR{var}}
+\Op{\kwd*{\&environment} \VAR{var}}
+\Op{\kwd*{\&optional}\Goos{\VAR{var}\XOR(\VAR{var} \Op{\VAR{init}
+ \Op{\VAR{supplied-p}}})}}
+\Op{\kwd*{\&environment} \VAR{var}}
+\Op{\Goo{\kwd*{\&rest}\XOR\kwd*{\&body}} \VAR{var}}
+\Op{\kwd*{\&environment} \VAR{var}}
+\OP{\kwd*{\&key}\GOos{\VAR{var}\XOR(\Goo{\VAR{var}\XOR(\kwd{:}\VAR{key}
+ \VAR{var})}%
+ \OP{\VAR{init}\Op{\VAR{supplied-p}}})}%
+ \Op{\kwd*{\&environment} \VAR{var}}
+ \Op{\kwd*{\&allow-other-keys}}}
+\Op{\kwd*{\&aux}\Goos{\VAR{var}\XOR(\VAR{var} \Op{\VAR{init}})}}%
+\Op{\kwd*{\&environment} \VAR{var}}
+)
+or\\
+(\Op{\kwd*{\&whole} \VAR{var}}%
+\Op{\kwd*{\&environment} \VAR{var}}
+\OPn{\VAR{var}}
+\Op{\kwd*{\&environment} \VAR{var}}
+\Op{\kwd*{\&optional}\Goos{\VAR{var}\XOR(\VAR{var} \Op{\VAR{init}
+ \Op{\VAR{supplied-p}}})}}
+\Op{\kwd*{\&environment} \VAR{var}}
+. \VAR{var}).
+\kwd*{\&environment} \VAR{var} may appear only once.
+\VAR{supplied-p} is \T\ if there is a corresponding argument.
+
+
+\begin{LIST}{1cm}
+
+ \IT{(\xorGOO{\SF*{DEFMACRO}\\\FU*{DEFINE-COMPILER-MACRO}}{\}}
+ \VAR{name} \OPn{\VAR{macro-arg}}
+ \OPn{(\kwd{declare} \OPn{\VAR{decl}})} \Op{\VAR{documentation}}
+ \OPn{\VAR{form}})}
+ Define macro \retval{\VAR{name}}.
+
+ \IT{(\SF*{DEFSETF} \VAR{function}\xorGOO{\VAR{update} \Op{\VAR{documentation}}\\
+ \OPn{\VAR{arg} (\OPn{\VAR{var}}) \OPn{(\kwd{declare} \OPn{\VAR{ decl}})} \Op{\VAR{documentation}}}}{\}})}
+ Specify how to \kwd{setf} a place accessed by \retval{\VAR{function}} if \VAR{function}
+ evaluates all its arguments.
+
+ \IT{(\SF*{DEFINE-SETF-EXPANDER} \VAR{function} \OPn{\VAR{macro-arg}}
+ \OPn{(\kwd{declare} \OPn{\VAR{decl}})} \Op{\VAR{documentation}}
+ \OPn{\VAR{form}})}
+ Specify how to \kwd{setf} a place accessed by \retval{\VAR{function}}.
+
+ \IT{(\SF*{DEFINE-MODIFY-MACRO} \VAR{name} (\kwd{\&optional}
+ \OPn{\VAR{var}} \kwd{\&rest} \OPn{\VAR{var}}) \VAR{function}
+ \Op{documentation})}
+ Define macro \retval{\VAR{name}} able to read and write a place. On
+ invokation, after applying \VAR{function} to place its return value
+ is stored there.
+
+ \IT{(\FU*{GET-SETF-EXPANSION} \VAR{place} \Op{\VAR{environment}})}
+ Return five values describing how to \kwd{setf} place.
+
+ \IT{(\SF*{MACROLET} (\OPn{(\OPn{name} \OPn{\VAR{macro-arg}} \OPn{(\kwd{declare} \OPn{\VAR{local-decl}})}
+ \Op{\VAR{documentation}} \OPn{form})}) \OPn{(\kwd{declare} \OPn{\VAR{decl}})} \OPn{\VAR{body}})}
+ Evaluate \retval{\OPn{\VAR{body}}} with \VAR{name}s locally defined as
+ corresponding macros which are invisible to each other.
+
+ \IT{\CNS*{LAMBDA-LIST-KEYWORDS}} List of macro lambda list keywords.
+
+ \IT{(\SF*{SYMBOL-MACROLET} (\OPn{(\VAR{name} \OPn{\VAR{form}})})\OPn{(\kwd{declare} \OPn{\VAR{decl}})} \OPn{body})}
+ Evaluate \retval{\OPn{\VAR{body}}} with \VAR{name}s locally defined as
+ corresponding symbol-macros.
+
+\end{LIST}
+
+
+% Copyright (C) 2008 Bert Burgemeister
+%
+% Permission is granted to copy, distribute and/or modify this
+% document under the terms of the GNU Free Documentation License,
+% Version 1.2 or any later version published by the Free Software
+% Foundation; with no Invariant Sections, no Front-Cover Texts and
+% no Back-Cover Texts. For details see file COPYING.
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Control Flow}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{LIST}{1cm}
+
+ \IT{(\SF*{IF} \VAR{test} \VAR{then} \Op{\VAR{else}})} Evaluate and return
+ \retval{\VAR{then}} if \VAR{test} returns \T, evaluate and return
+ \retval{\VAR{else}} otherwise.
+
+ \IT{(\SF*{COND} \OPn{(\VAR{test} \OPn{\VAR{then}})})}
+ Evaluate and return the
+ \retval{\VAR{then}s} whose \VAR{test} returns \T, return
+ \retval{\NIL} if all \VAR{test}s return \NIL.
+
+ \IT{(\xorGOO{\SF*{WHEN}\\\SF*{UNLESS}}{\}} \VAR{test} \OPn{\VAR{foo}})}
+ Evaluate \VAR{foo}s and return \retval{value of last \VAR{foo}} if
+ \VAR{test} returns \T\ or \NIL, resp. Return \retval{\NIL} otherwise.
+
+ \IT{(\SF*{CASE} \VAR{object} \GOOs{(\GOop{\VAR{key}}\Goos{\VAR{foo}})}
+ \Op{(\Goo{\LIT{t}\XOR\kwd*{OTHERWISE}}\Goos{\VAR{foo}})})}
+ Evaluate first \VAR{foo}s whose unevaluated \VAR{key} is either \kwd{eql} evaluated
+ \VAR{object} or \LIT{t} or \LIT{otherwise}. Return \retval{value of
+ last evaluated \VAR{foo}}.
+
+ \IT{(\Goo{\SF*{CCASE}\XOR\SF*{ECASE}} \VAR{object} \Goos{(\GOop{\VAR{key}}\Goos{\VAR{foo}})})}
+ Evaluate first \VAR{foo}s whose unevaluated \VAR{key} is \kwd{eql} evaluated
+ \VAR{object}. Return \retval{value of last evaluated
+ \VAR{foo}}. Signal correctible error/non-correctible error,
+ resp., if no \VAR{key} matches and return \retval{\NIL} then.
+
+ \IT{(\SF*{AND} \OPn{\VAR{form}})} Evaluate \VAR{form}s from left to
+ right. Immediately return \retval{\NIL} if one \VAR{form}'s value is \NIL. Return
+ \retval{value of last \VAR{form}} otherwise. Without any \VAR{form}
+ return \retval{\NIL}
+
+ \IT{(\SF*{OR} \OPn{\VAR{form}})} Evaluate \VAR{form}s from left to
+ right. Immediately return \retval{value of first non-\NIL-evaluating
+ form}. Return \retval{\NIL} if no \VAR{form} returns true.
+ Return \retval{value of last \VAR{form}} otherwise.
+
+ \IT{(\kwd*{PROGN} \OPn{\VAR{form}})} Sequence \VAR{form}s. Return
+ \retval{value of last \VAR{form}}.
+
+ \IT{(\xorGOO{\SF*{PROG}\\
+ \SF*{PROG*}}{\}}
+ (\orGOO{%
+ \VAR{var}\\
+ (\VAR{var } \Op{ \VAR{value}})}{\}^{\!\!*}})
+ \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \xorGOO{\VAR{tag}\\\VAR{form}}{\}^{\!\!*}})}
+ Evaluate \kwd{TAGBODY}-like body with locally bound
+ \VAR{var}s. Return \retval{\NIL} or explicitly \retval{\kwd{return}ed value}.
+
+ \IT{\arrGOO{%
+ (\SF*{MULTIPLE-VALUE-PROG1} \VAR{ form-r} \OPn{\VAR{ form}})\\
+ (\SF*{PROG1} \VAR{ form-r} \OPn{\VAR{ form}})\\
+ (\SF*{PROG2} \VAR{ form-a} \VAR{ form-r} \OPn{\VAR{ form}})}{\}}}
+ Evaluate all forms in order. Return \retval{values/1st value of \VAR{form-r}}.
+
+ \IT{(\SF*{RETURN} \Op{result})} Have implicit block of enclosing
+ iteration return with \retval{\VAR{result}}.
+
+ \IT{(\SF*{DESTRUCTURING-BIND} \VAR{foo} \VAR{bar} \OPn{(\kwd{declare}
+ \OPn{\VAR{decl}})} \OPn{\VAR{form}})} Evaluate \VAR{form}s, and return
+ \retval{value of last \VAR{form}}, with
+ variables from tree \VAR{foo} bound to corresponding elements of tree \VAR{bar}.
+
+ \IT{(\xorGOO{\SF*{LET}\\
+ \SF*{LET*}}{\}}(%
+ \orGOO{\VAR{name}\\
+ (\VAR{name}\Op{\VAR{value}})}{\}^{\!\!*}})
+ \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \OPn{\VAR{body}})}
+ Evaluate \OPn{\VAR{body}} with \VAR{name}s bound to \VAR{value}s or
+ \NIL. Return \retval{values returned by \OPn{\VAR{body}}}. In \SF{LET*},
+ \VAR{value}s can refer to previous \VAR{name}s.
+
+ \IT{(\SF*{LOCALLY} \OPn{(\kwd{declare} \OPn{\VAR{decl}})}
+ \OPn{\VAR{body}})}
+ Evaluate \OPn{\VAR{body}} with declarations \VAR{decl} in