My various dotfiles

chap-1.texi 119KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747
  1. @node Introduction (Introduction), Syntax, Top, Top
  2. @chapter Introduction
  3. @menu
  4. * Scope::
  5. * Organization of the Document::
  6. * Referenced Publications::
  7. * Definitions::
  8. * Conformance::
  9. * Language Extensions::
  10. * Language Subsets::
  11. * Deprecated Language Features::
  12. * Symbols in the COMMON-LISP Package::
  13. @end menu
  14. @node Scope, Organization of the Document, Introduction (Introduction), Introduction (Introduction)
  15. @section Scope, Purpose, and History
  16. @c including concept-history
  17. @menu
  18. * Scope and Purpose::
  19. * History::
  20. @end menu
  21. @node Scope and Purpose, History, Scope, Scope
  22. @subsection Scope and Purpose
  23. The specification set forth in this document is designed to promote
  24. the portability of @r{Common Lisp} programs among a variety of data processing
  25. systems. It is a language specification aimed at an audience of
  26. implementors and knowledgeable programmers. It is neither a tutorial nor
  27. an implementation guide.
  28. @node History, , Scope and Purpose, Scope
  29. @subsection History
  30. Lisp is a family of languages with a long history. Early key ideas in
  31. Lisp were developed by John McCarthy during the 1956 Dartmouth Summer
  32. Research Project on Artificial Intelligence. McCarthy's motivation
  33. was to develop an algebraic list processing language for artificial
  34. intelligence work.
  35. Implementation efforts for early dialects of Lisp were undertaken on
  36. the IBM~704, the IBM~7090, the Digital Equipment Corporation (DEC) PDP-1,
  37. the DEC~PDP-6, and the PDP-10. The primary dialect of Lisp between
  38. 1960 and 1965 was Lisp~1.5. By the early 1970's there were two
  39. predominant dialects of Lisp, both arising from these early efforts:
  40. MacLisp and Interlisp.
  41. For further information about very early Lisp dialects,
  42. see {The Anatomy of Lisp} or {Lisp 1.5 Programmer's Manual}.
  43. MacLisp improved on the Lisp~1.5 notion of special variables and error
  44. handling. MacLisp also introduced the concept of functions that could take
  45. a variable number of arguments, macros, arrays, non-local dynamic
  46. exits, fast arithmetic, the first good Lisp compiler, and an emphasis
  47. on execution speed.
  48. By the end of the 1970's, MacLisp was in use at over 50 sites.
  49. For further information about Maclisp,
  50. see {Maclisp Reference Manual, Revision~0} or {The Revised Maclisp Manual}.
  51. Interlisp introduced many ideas into Lisp programming environments and
  52. methodology. One of the Interlisp ideas that influenced @r{Common Lisp} was an iteration
  53. construct implemented by Warren Teitelman that inspired the @b{loop}
  54. macro used both on the Lisp Machines and in MacLisp, and now in @r{Common Lisp}.
  55. For further information about Interlisp,
  56. see {Interlisp Reference Manual}.
  57. Although the first implementations of Lisp were on the IBM~704 and the
  58. IBM~7090, later work focussed on the DEC
  59. PDP-6 and, later, PDP-10 computers, the latter being the mainstay of
  60. Lisp and artificial intelligence work at such places as
  61. Massachusetts Institute of Technology (MIT), Stanford University,
  62. and
  63. Carnegie Mellon University (CMU) from the mid-1960's through much of the 1970's.
  64. The PDP-10 computer and its predecessor the PDP-6 computer were, by
  65. design, especially well-suited to Lisp because they had 36-bit words
  66. and 18-bit addresses. This architecture allowed a @i{cons} cell to be
  67. stored in one word; single instructions could extract the
  68. @i{car} and @i{cdr}
  69. parts. The PDP-6 and PDP-10 had fast, powerful stack instructions
  70. that enabled fast function calling.
  71. But the limitations of the PDP-10 were evident by 1973: it supported a
  72. small number of researchers using Lisp, and the small, 18-bit address
  73. space (2^{18} = 262,144 words) limited the size of a single
  74. program.
  75. One response to the address space problem was the Lisp Machine, a
  76. special-purpose computer designed to run Lisp programs. The other
  77. response was to use general-purpose computers with address spaces
  78. larger than 18~bits, such as the DEC VAX and
  79. the S-1~Mark~IIA.
  80. For further information about S-1 Common Lisp, see ``{S-1 Common Lisp Implementation}.''
  81. The Lisp machine concept was developed in the late 1960's. In the
  82. early 1970's, Peter Deutsch, working with
  83. Daniel Bobrow, implemented a Lisp on the
  84. Alto, a single-user minicomputer, using microcode to interpret a
  85. byte-code implementation language. Shortly thereafter, Richard
  86. Greenblatt began work on a different hardware and instruction set
  87. design at MIT.
  88. Although the Alto was not a total success as a Lisp machine, a dialect
  89. of Interlisp known as Interlisp-D became available on the D-series
  90. machines manufactured by Xerox---the Dorado, Dandelion,
  91. Dandetiger, and Dove (or Daybreak).
  92. An upward-compatible extension of MacLisp called Lisp
  93. Machine Lisp became available on the early MIT Lisp Machines.
  94. Commercial Lisp machines from Xerox, Lisp Machines (LMI), and
  95. Symbolics were on the market by 1981.
  96. For further information about Lisp Machine Lisp, see {Lisp Machine Manual}.
  97. During the late 1970's, Lisp Machine Lisp began to expand towards a
  98. much fuller language. Sophisticated lambda lists,
  99. @t{setf}, multiple values, and structures
  100. like those in @r{Common Lisp} are the results of early
  101. experimentation with programming styles by the Lisp Machine group.
  102. Jonl White and others migrated these features to MacLisp.
  103. Around 1980, Scott Fahlman and others at CMU began work on a Lisp to
  104. run on the Scientific Personal Integrated Computing
  105. Environment (SPICE) workstation. One of the goals of the project was to
  106. design a simpler dialect than Lisp Machine Lisp.
  107. The Macsyma group at MIT began a project during the late 1970's called
  108. the New Implementation of Lisp (NIL) for the VAX, which was headed by
  109. White. One of the stated goals of the NIL project was to fix many of
  110. the historic, but annoying, problems with Lisp while retaining significant
  111. compatibility with MacLisp. At about the same time, a research group at
  112. Stanford University and Lawrence Livermore National Laboratory headed
  113. by Richard P. Gabriel began the design of a Lisp to run on the
  114. S-1~Mark~IIA supercomputer. S-1~Lisp, never completely
  115. functional, was the test bed for adapting advanced compiler techniques
  116. to Lisp implementation. Eventually the S-1 and NIL groups
  117. collaborated.
  118. For further information about the NIL project,
  119. see ``{NIL---A Perspective}.''
  120. The first effort towards Lisp standardization was made in 1969,
  121. when Anthony Hearn and Martin Griss at the University of Utah
  122. defined Standard Lisp---a subset of Lisp~1.5 and other dialects---to
  123. transport REDUCE, a symbolic algebra system.
  124. During the 1970's, the Utah group implemented first a retargetable
  125. optimizing compiler for Standard Lisp,
  126. and then an extended implementation known as Portable Standard Lisp (PSL).
  127. By the mid 1980's, PSL ran on about a dozen kinds of computers.
  128. For further information about Standard Lisp, see ``{Standard LISP Report}.''
  129. PSL and Franz Lisp---a MacLisp-like dialect for Unix machines---were
  130. the first examples of widely available Lisp dialects on multiple
  131. hardware platforms.
  132. One of the most important developments in Lisp occurred during the
  133. second half of the 1970's: Scheme. Scheme, designed by Gerald J.
  134. Sussman and Guy L. Steele Jr., is a simple dialect of Lisp whose
  135. design brought to Lisp some of the ideas from programming language
  136. semantics developed in the 1960's. Sussman was one of the prime
  137. innovators behind many other advances in Lisp technology from the late
  138. 1960's through the 1970's.
  139. The major contributions of Scheme were lexical scoping, lexical
  140. closures, first-class continuations, and simplified syntax (no
  141. separation of value cells and function cells). Some of these contributions made
  142. a large impact on the design of @r{Common Lisp}.
  143. For further information about Scheme, see {IEEE Standard for the Scheme Programming Language} or ``{Revised^3 Report on the Algorithmic Language Scheme}.''
  144. In the late 1970's object-oriented programming concepts started to
  145. make a strong impact on Lisp.
  146. At MIT, certain ideas from Smalltalk made their way into several
  147. widely used programming systems.
  148. Flavors, an object-oriented programming system with multiple inheritance,
  149. was developed at MIT for the Lisp machine community by Howard Cannon and others.
  150. At Xerox, the experience with Smalltalk and
  151. Knowledge Representation Language (KRL) led to the development of
  152. Lisp Object Oriented Programming System (LOOPS) and later Common LOOPS.
  153. For further information on Smalltalk, see {Smalltalk-80: The Language and its Implementation}.
  154. For further information on Flavors, see {Flavors: A Non-Hierarchical Approach to Object-Oriented Programming}.
  155. These systems influenced the design of the Common Lisp Object System (CLOS).
  156. CLOS was developed specifically for this standardization effort,
  157. and was separately written up in ``Common Lisp Object System Specification.'' However, minor details
  158. of its design have changed slightly since that publication, and that paper
  159. should not be taken as an authoritative reference to the semantics of the
  160. object system as described in this document.
  161. In 1980 Symbolics and LMI were developing Lisp Machine Lisp; stock-hardware
  162. implementation groups were developing NIL, Franz Lisp, and PSL; Xerox
  163. was developing Interlisp; and the SPICE project at CMU was developing
  164. a MacLisp-like dialect of Lisp called SpiceLisp.
  165. In April 1981, after a DARPA-sponsored meeting concerning the
  166. splintered Lisp community, Symbolics, the SPICE project, the NIL
  167. project, and the S-1~Lisp project joined together to define
  168. @r{Common Lisp}. Initially spearheaded by White and Gabriel, the
  169. driving force behind this grassroots effort was provided by Fahlman,
  170. Daniel Weinreb, David Moon, Steele, and Gabriel.
  171. @r{Common Lisp} was designed as a description of a family of languages. The
  172. primary influences on @r{Common Lisp} were Lisp Machine Lisp, MacLisp, NIL,
  173. S-1~Lisp, Spice Lisp, and Scheme.
  174. @i{Common Lisp: The Language} is a description of that design. Its
  175. semantics were intentionally underspecified in places where it was
  176. felt that a tight specification would overly constrain @r{Common Lisp}
  177. research and use.
  178. In 1986 X3J13 was formed as a technical working group to
  179. produce a draft for an ANSI @r{Common Lisp} standard. Because of the
  180. acceptance of @r{Common Lisp}, the goals of this group differed from those of
  181. the original designers. These new goals included stricter
  182. standardization for portability, an object-oriented programming
  183. system, a condition system, iteration facilities, and a way to handle
  184. large character sets. To accommodate those
  185. goals, a new language specification, this
  186. document, was developed.
  187. @c end of including concept-history
  188. @node Organization of the Document, Referenced Publications, Scope, Introduction (Introduction)
  189. @section Organization of the Document
  190. @c including concept-organization
  191. This is a reference document, not a tutorial document. Where possible
  192. and convenient, the order of presentation has been chosen so that the
  193. more primitive topics precede those that build upon them; however,
  194. linear readability has not been a priority.
  195. This document is divided into chapters by topic.
  196. Any given chapter might contain conceptual material, dictionary entries, or both.
  197. @i{Defined names} within the dictionary portion of a chapter are
  198. grouped in a way that brings related topics into physical proximity.
  199. Many such groupings were possible,
  200. and no deep significance should be inferred from the particular grouping that was chosen.
  201. To see @i{defined names} grouped alphabetically, consult the index.
  202. For a complete list of @i{defined names}, see @ref{Symbols in the COMMON-LISP Package}.
  203. In order to compensate for the sometimes-unordered portions of this document,
  204. a glossary has been provided; see @ref{Glossary}.
  205. The glossary provides connectivity by providing easy access to
  206. definitions of terms, and in some cases by providing examples or
  207. cross references to additional conceptual material.
  208. For information about notational conventions used in this document,
  209. see @ref{Definitions}.
  210. For information about conformance, see @ref{Conformance}.
  211. For information about extensions and subsets, see @ref{Language Extensions}
  212. and @ref{Language Subsets}.
  213. For information about how @i{programs} in the language are parsed by the
  214. @i{Lisp reader}, see @ref{Syntax}.
  215. For information about how @i{programs} in the language are @i{compiled}
  216. and @i{executed}, see @ref{Evaluation and Compilation}.
  217. For information about data types, see @ref{Types and Classes}.
  218. Not all @i{types} and @i{classes} are defined in this chapter;
  219. many are defined in chapter corresponding to their topic--for example,
  220. the numeric types are defined in @ref{Numbers}.
  221. For a complete list of @i{standardized} @i{types},
  222. see @i{Figure~4--2}.
  223. For information about general purpose control and data flow,
  224. see @ref{Data and Control Flow} or @ref{Iteration}.
  225. @c end of including concept-organization
  226. @node Referenced Publications, Definitions, Organization of the Document, Introduction (Introduction)
  227. @section Referenced Publications
  228. @c including concept-references
  229. @table @asis
  230. @item @t{*}
  231. {The Anatomy of Lisp},
  232. John Allen, McGraw-Hill, Inc., 1978.
  233. @item @t{*}
  234. {The Art of Computer Programming, Volume 3},
  235. Donald E. Knuth, Addison-Wesley Company (Reading, MA), 1973.
  236. @item @t{*}
  237. {The Art of the Metaobject Protocol},
  238. Kiczales et al., MIT Press (Cambridge, MA), 1991.
  239. @item @t{*}
  240. ``Common Lisp Object System Specification,''
  241. D. Bobrow, L. DiMichiel, R.P. Gabriel, S. Keene, G. Kiczales, D. Moon,
  242. @i{SIGPLAN Notices} V23, September, 1988.
  243. @item @t{*}
  244. {Common Lisp: The Language},
  245. Guy L. Steele Jr., Digital Press (Burlington, MA), 1984.
  246. @item @t{*}
  247. {Common Lisp: The Language, Second Edition},
  248. Guy L. Steele Jr., Digital Press (Bedford, MA), 1990.
  249. @item @t{*}
  250. {Exceptional Situations in Lisp},
  251. Kent M. Pitman,
  252. @i{Proceedings of the First European Conference
  253. on the Practical Application of LISP\/}
  254. (EUROPAL '90),
  255. Churchill College, Cambridge, England,
  256. March 27-29, 1990.
  257. @item @t{*}
  258. {Flavors: A Non-Hierarchical Approach to Object-Oriented Programming},
  259. Howard I. Cannon, 1982.
  260. @item @t{*}
  261. {IEEE Standard for Binary Floating-Point Arithmetic},
  262. ANSI/IEEE Std 754-1985,
  263. Institute of Electrical and Electronics Engineers, Inc. (New York), 1985.
  264. @item @t{*}
  265. {IEEE Standard for the Scheme Programming Language},
  266. IEEE Std 1178-1990,
  267. Institute of Electrical and Electronic Engineers, Inc. (New York), 1991.
  268. @item @t{*}
  269. {Interlisp Reference Manual}, Third Revision,
  270. Teitelman, Warren, et al,
  271. Xerox Palo Alto Research Center (Palo Alto, CA), 1978.
  272. @item @t{*}
  273. @r{ISO 6937/2},
  274. @i{Information processing---Coded character sets
  275. for text communication---Part 2: Latin alphabetic and non-alphabetic
  276. graphic characters},
  277. ISO, 1983.
  278. @item @t{*}
  279. {Lisp 1.5 Programmer's Manual},
  280. John McCarthy, MIT Press (Cambridge, MA), August, 1962.
  281. @item @t{*}
  282. {Lisp Machine Manual},
  283. D.L. Weinreb and D.A. Moon,
  284. Artificial Intelligence Laboratory, MIT (Cambridge, MA), July, 1981.
  285. @item @t{*}
  286. {Maclisp Reference Manual, Revision~0},
  287. David A. Moon, Project MAC (Laboratory for Computer Science),
  288. MIT (Cambridge, MA), March, 1974.
  289. @item @t{*}
  290. ``{NIL---A Perspective},''
  291. JonL White, @i{Macsyma User's Conference}, 1979.
  292. @item @t{*}
  293. {Performance and Evaluation of Lisp Programs},
  294. Richard P. Gabriel, MIT Press (Cambridge, MA), 1985.
  295. @item @t{*}
  296. ``{Principal Values and Branch Cuts in Complex APL},''
  297. Paul Penfield Jr., @i{APL 81 Conference Proceedings},
  298. ACM SIGAPL (San Francisco, September 1981), 248-256.
  299. Proceedings published as @i{APL Quote Quad 12}, 1 (September 1981).
  300. @item @t{*}
  301. {The Revised Maclisp Manual},
  302. Kent M. Pitman,
  303. Technical Report 295,
  304. Laboratory for Computer Science, MIT (Cambridge, MA), May 1983.
  305. @item @t{*}
  306. ``{Revised^3 Report on the Algorithmic Language Scheme},''
  307. Jonathan Rees and William Clinger (editors),
  308. @i{SIGPLAN Notices} V21, #12, December, 1986.
  309. @item @t{*}
  310. ``S-1 Common Lisp Implementation,''
  311. R.A. Brooks, R.P. Gabriel, and G.L. Steele,
  312. @i{Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming},
  313. 108-113, 1982.
  314. @item @t{*}
  315. @i{Smalltalk-80: The Language and its Implementation},
  316. A. Goldberg and D. Robson, Addison-Wesley, 1983.
  317. @item @t{*}
  318. ``{Standard LISP Report},''
  319. J.B. Marti, A.C. Hearn, M.L. Griss, and C. Griss,
  320. @i{SIGPLAN Notices} V14, #10, October, 1979.
  321. @item @t{*}
  322. {Webster's Third New International Dictionary
  323. the English Language, Unabridged},
  324. Merriam Webster (Springfield, MA), 1986.
  325. @item @t{*}
  326. @i{XP: A Common Lisp Pretty Printing System},
  327. R.C. Waters,
  328. Memo 1102a,
  329. Artificial Intelligence Laboratory, MIT (Cambridge, MA), September 1989.
  330. @end table
  331. @c end of including concept-references
  332. @node Definitions, Conformance, Referenced Publications, Introduction (Introduction)
  333. @section Definitions
  334. @c including concept-definitions
  335. This section contains notational conventions and definitions of terms
  336. used in this manual.
  337. @menu
  338. * Notational Conventions::
  339. * Error Terminology::
  340. * Sections Not Formally Part Of This Standard::
  341. * Interpreting Dictionary Entries::
  342. @end menu
  343. @node Notational Conventions, Error Terminology, Definitions, Definitions
  344. @subsection Notational Conventions
  345. @ITindex{notation}
  346. The following notational conventions are used throughout this document.
  347. @menu
  348. * Font Key::
  349. * Modified BNF Syntax::
  350. * Splicing in Modified BNF Syntax::
  351. * Indirection in Modified BNF Syntax::
  352. * Additional Uses for Indirect Definitions in Modified BNF Syntax::
  353. * Special Symbols::
  354. * Objects with Multiple Notations::
  355. * Case in Symbols::
  356. * Numbers (Objects with Multiple Notations)::
  357. * Use of the Dot Character::
  358. * NIL::
  359. * Designators::
  360. * Nonsense Words::
  361. @end menu
  362. @node Font Key, Modified BNF Syntax, Notational Conventions, Notational Conventions
  363. @subsubsection Font Key
  364. @ITindex{font key}
  365. Fonts are used in this document to convey information.
  366. @table @asis
  367. @item @i{name}
  368. Denotes a formal term whose meaning is defined in the Glossary.
  369. When this font is used, the Glossary definition takes precedence
  370. over normal English usage.
  371. Sometimes a glossary term appears subscripted,
  372. as in ``@i{whitespace}_2.''
  373. Such a notation selects one particular Glossary definition out of several,
  374. in this case the second.
  375. The subscript notation for Glossary terms is generally used where the
  376. context might be insufficient to disambiguate among the available definitions.
  377. @item @i{name}
  378. @IGindex{name}
  379. Denotes the introduction of a formal term locally to the current text.
  380. There is still a corresponding glossary entry, and is formally equivalent
  381. to a use of ``@i{name},'' but the hope is that making such uses
  382. conspicuous will save the reader a trip to the glossary in some cases.
  383. @item @b{name}
  384. Denotes a symbol in the @t{COMMON-LISP} @i{package}.
  385. For information about @i{case} conventions,
  386. see @ref{Case in Symbols}.
  387. @item @t{name}
  388. Denotes a sample @i{name} or piece of @i{code} that a programmer
  389. might write in @r{Common Lisp}.
  390. This font is also used for certain @i{standardized} names that are not
  391. names of @i{external symbols} of the @t{COMMON-LISP} @i{package},
  392. such as @i{keywords}_1,
  393. @i{package} @i{names},
  394. and @i{loop keywords}.
  395. @item @i{name}
  396. Denotes the name of a @i{parameter} or @i{value}.
  397. In some situations the notation ``<<@i{name}>>'' (@i{i.e.}, the same font,
  398. but with surrounding ``angle brackets'') is used instead in order to
  399. provide better visual separation from surrounding characters. These
  400. ``angle brackets'' are metasyntactic, and never actually appear in program
  401. input or output.
  402. @end table
  403. @node Modified BNF Syntax, Splicing in Modified BNF Syntax, Font Key, Notational Conventions
  404. @subsubsection Modified BNF Syntax
  405. @ITindex{bnf key}
  406. This specification uses an extended Backus Normal Form (BNF) to
  407. describe the syntax of @r{Common Lisp} @i{macro forms} and @i{special forms}.
  408. This section discusses the syntax of BNF expressions.
  409. @node Splicing in Modified BNF Syntax, Indirection in Modified BNF Syntax, Modified BNF Syntax, Notational Conventions
  410. @subsubsection Splicing in Modified BNF Syntax
  411. The primary extension used is the following:
  412. @center [[O]]
  413. An expression of this form appears whenever a list of elements is
  414. to be spliced into a larger structure and the elements can appear in
  415. any order. The symbol O represents a description of the syntax of
  416. some number of syntactic elements to be spliced; that description must
  417. be of the form
  418. @center O_1 | ... | O_l
  419. @noindent
  420. where each O_i can be of the form S or of
  421. the form S@r{*} or of the form S^1.
  422. The expression [[O]] means that a list of the form
  423. @center (O_@{i_1@}... O_@{i_j@}) 1<= j
  424. @noindent
  425. is spliced into the enclosing expression,
  426. such that if n != m and 1<= n,m<= j,
  427. then either O_@{i_n@}!= O_@{i_m@}
  428. or O_@{i_n@} = O_@{i_m@} = Q_k,
  429. where for some 1<= k <= n, O_k is of the form Q_k@r{*}.
  430. Furthermore, for each O_@{i_n@} that is of the form Q_k^1,
  431. that element is required to appear somewhere in the list to be spliced.
  432. For example, the expression
  433. @t{(x [[A | B@r{*} | C]] y)}
  434. @noindent
  435. means that at most one @t{A}, any number of @t{B}'s, and
  436. at most one @t{C} can occur in any order.
  437. It is a description of any of these:
  438. @example
  439. (x y)
  440. (x B A C y)
  441. (x A B B B B B C y)
  442. (x C B A B B B y)
  443. @end example
  444. @noindent
  445. but not any of these:
  446. @example
  447. (x B B A A C C y)
  448. (x C B C y)
  449. @end example
  450. @noindent
  451. In the first case, both @t{A} and @t{C} appear too often,
  452. and in the second case @t{C} appears too often.
  453. The notation [[O_1 | O_2 | ...]]^+
  454. adds the additional restriction that at least one item from among the possible
  455. choices must be used. For example:
  456. @t{(x [[A | B@r{*} | C]]^+ y)}
  457. @noindent
  458. means that at most one @t{A}, any number of @t{B}'s, and
  459. at most one @t{C} can occur in any order, but that in any case at least
  460. one of these options must be selected.
  461. It is a description of any of these:
  462. @example
  463. (x B y)
  464. (x B A C y)
  465. (x A B B B B B C y)
  466. (x C B A B B B y)
  467. @end example
  468. @noindent
  469. but not any of these:
  470. @example
  471. (x y)
  472. (x B B A A C C y)
  473. (x C B C y)
  474. @end example
  475. @noindent
  476. In the first case, no item was used;
  477. in the second case, both @t{A} and @t{C} appear too often;
  478. and in the third case @t{C} appears too often.
  479. Also, the expression:
  480. @t{(x [[A^1 | B^1 | C]] y)}
  481. @noindent
  482. can generate exactly these and no others:
  483. @example
  484. (x A B C y)
  485. (x A C B y)
  486. (x A B y)
  487. (x B A C y)
  488. (x B C A y)
  489. (x B A y)
  490. (x C A B y)
  491. (x C B A y)
  492. @end example
  493. @node Indirection in Modified BNF Syntax, Additional Uses for Indirect Definitions in Modified BNF Syntax, Splicing in Modified BNF Syntax, Notational Conventions
  494. @subsubsection Indirection in Modified BNF Syntax
  495. An indirection extension is introduced in order to make this
  496. new syntax more readable:
  497. @center !@i{O}
  498. @noindent
  499. If @i{O} is a non-terminal symbol, the right-hand side
  500. of its definition is substituted for the entire expression
  501. !@i{O}. For example, the following BNF is equivalent to
  502. the BNF in the previous example:
  503. @t{(x [[!@i{O}]] y)}
  504. @w{@i{O} ::=@t{A} | @t{B}@r{*} | @t{C}}
  505. @node Additional Uses for Indirect Definitions in Modified BNF Syntax, Special Symbols, Indirection in Modified BNF Syntax, Notational Conventions
  506. @subsubsection Additional Uses for Indirect Definitions in Modified BNF Syntax
  507. In some cases, an auxiliary definition in the BNF might appear to be unused
  508. within the BNF, but might still be useful elsewhere. For example, consider the
  509. following definitions:
  510. @code{case} @i{keyform @{!@i{normal-clause}@}{*} @r{[}!@i{otherwise-clause}@r{]}} @result{} @i{@{@i{result}@}{*}}
  511. @code{ccase} @i{keyplace @{!@i{normal-clause}@}{*}} @result{} @i{@{@i{result}@}{*}}
  512. @code{ecase} @i{keyform @{!@i{normal-clause}@}{*}} @result{} @i{@{@i{result}@}{*}}
  513. @w{@i{normal-clause} ::=@r{(}keys @{@i{form}@}{*}@r{)}}
  514. @w{@i{otherwise-clause} ::=@r{(}@{otherwise | t@} @{@i{form}@}{*}@r{)}}
  515. @w{@i{clause} ::=normal-clause | otherwise-clause}
  516. Here the term ``@i{clause}'' might appear to be ``dead'' in that it
  517. is not used in the BNF. However, the purpose of the BNF is not just to guide parsing,
  518. but also to define useful terms for reference in the descriptive text which follows.
  519. As such, the term ``@i{clause}'' might appear in text that follows,
  520. as shorthand for ``@i{normal-clause} or @i{otherwise-clause}.''
  521. @node Special Symbols, Objects with Multiple Notations, Additional Uses for Indirect Definitions in Modified BNF Syntax, Notational Conventions
  522. @subsubsection Special Symbols
  523. The special symbols described here are used as a notational convenience
  524. within this document, and are part of neither the @r{Common Lisp} language nor
  525. its environment.
  526. @table @asis
  527. @item @result{}
  528. This indicates evaluation.
  529. For example:
  530. @example
  531. (+ 4 5) @result{} 9
  532. @end example
  533. This means that the result of
  534. evaluating the @i{form} @t{(+ 4 5)} is @t{9}.
  535. If a @i{form} returns @i{multiple values}, those values might
  536. be shown separated by spaces, line breaks, or commas.
  537. For example:
  538. @example
  539. (truncate 7 5)
  540. @result{} 1 2
  541. (truncate 7 5)
  542. @result{} 1
  543. 2
  544. (truncate 7 5)
  545. @result{} 1, 2
  546. @end example
  547. Each of the above three examples is equivalent, and specifies
  548. that @t{(truncate 7 5)} returns two values, which are @t{1} and @t{2}.
  549. Some @i{conforming implementations} actually type an arrow (or some
  550. other indicator) before showing return values, while others do not.
  551. @item @i{OR}@result{}
  552. The notation ``{@i{OR}@result{}}'' is used to denote one of several possible
  553. alternate results. The example
  554. @example
  555. (char-name #\a)
  556. @result{} NIL
  557. @i{OR}@result{} "LOWERCASE-a"
  558. @i{OR}@result{} "Small-A"
  559. @i{OR}@result{} "LA01"
  560. @end example
  561. indicates that @b{nil}, @t{"LOWERCASE-a"}, @t{"Small-A"}, @t{"LA01"} are
  562. among the possible results of @t{(char-name #\a)}---each with equal preference.
  563. Unless explicitly specified otherwise, it should not be assumed that the set of possible
  564. results shown is exhaustive.
  565. Formally, the above example is equivalent to
  566. @example
  567. (char-name #\a) @result{} @i{implementation-dependent}
  568. @end example
  569. but it is intended to provide additional information to illustrate some
  570. of the ways in which it is permitted for implementations to diverge.
  571. @item @i{NOT}@result{}
  572. The notation ``{@i{NOT}@result{}}'' is used to denote a result which is not possible.
  573. This might be used, for example, in order to emphasize a situation where
  574. some anticipated misconception might lead the reader to falsely believe
  575. that the result might be possible. For example,
  576. @example
  577. (function-lambda-expression
  578. (funcall #'(lambda (x) #'(lambda () x)) nil))
  579. @result{} NIL, @i{true}, NIL
  580. @i{OR}@result{} (LAMBDA () X), @i{true}, NIL
  581. @i{NOT}@result{} NIL, @i{false}, NIL
  582. @i{NOT}@result{} (LAMBDA () X), @i{false}, NIL
  583. @end example
  584. @item @equiv{}
  585. This indicates code equivalence. For example:
  586. @example
  587. (gcd x (gcd y z)) @equiv{} (gcd (gcd x y) z)
  588. @end example
  589. This means that the results and observable side-effects of evaluating
  590. the @i{form}
  591. @t{(gcd x (gcd y z))} are always the same as the results
  592. and observable side-effects of
  593. @t{(gcd (gcd x y) z)} for any
  594. @t{x}, @t{y}, and @t{z}.
  595. @item {@t{ |> }}
  596. @r{Common Lisp} specifies input and output with respect to a non-interactive stream model.
  597. The specific details of how interactive input and output are mapped onto that
  598. non-interactive model are @i{implementation-defined}.
  599. For example, @i{conforming implementations} are permitted to differ in issues
  600. of how interactive input is terminated. For example, the @i{function} @b{read}
  601. terminates when the final delimiter is typed on a non-interactive stream.
  602. In some @i{implementations}, an interactive call to @b{read} returns
  603. as soon as the final delimiter is typed, even if that delimiter is not a @i{newline}.
  604. In other @i{implementations}, a final @i{newline} is always required.
  605. In still other @i{implementations}, there might be a command which ``activates''
  606. a buffer full of input without the command itself being visible on the program's
  607. input stream.
  608. In the examples in this document, the notation ``{@t{ |> }}'' precedes
  609. lines where interactive input and output occurs. Within such a scenario,
  610. ``@b{|>>}@t{this notation}@b{<<|}'' notates user input.
  611. For example, the notation
  612. @example
  613. (+ 1 (print (+ (sqrt (read)) (sqrt (read)))))
  614. @t{ |> } @b{|>>}@t{9 16 }@b{<<|}
  615. @t{ |> } 7
  616. @result{} 8
  617. @end example
  618. shows an interaction in which
  619. ``@t{(+ 1 (print (+ (sqrt (read)) (sqrt (read)))))}''
  620. is a @i{form} to be @i{evaluated},
  621. ``@t{9 16 }'' is interactive input,
  622. ``@t{7}'' is interactive output, and
  623. ``@t{8}'' is the @i{value} @i{yielded} from the @i{evaluation}.
  624. The use of this notation is intended to disguise small differences
  625. in interactive input and output behavior between @i{implementations}.
  626. Sometimes, the non-interactive stream model calls for a @i{newline}.
  627. How that @i{newline} character is interactively entered is an
  628. @i{implementation-defined} detail of the user interface, but in that
  629. case, either the notation ``<@i{Newline}>'' or ``{@i{[<--}~]}'' might be used.
  630. @example
  631. (progn (format t "~&Who? ") (read-line))
  632. @t{ |> } Who? @b{|>>}@t{Fred, Mary, and Sally{@i{[<--}~]}}@b{<<|}
  633. @result{} "Fred, Mary, and Sally", @i{false}
  634. @end example
  635. @end table
  636. @node Objects with Multiple Notations, Case in Symbols, Special Symbols, Notational Conventions
  637. @subsubsection Objects with Multiple Notations
  638. Some @i{objects} in @r{Common Lisp} can be notated in more than one way.
  639. In such situations, the choice of which notation to use is technically arbitrary,
  640. but conventions may exist which convey a ``point of view'' or ``sense of intent.''
  641. @node Case in Symbols, Numbers (Objects with Multiple Notations), Objects with Multiple Notations, Notational Conventions
  642. @subsubsection Case in Symbols
  643. @ITindex{case in symbol names}
  644. While @i{case} is significant in the process of @i{interning} a @i{symbol},
  645. the @i{Lisp reader}, by default, attempts to canonicalize the case of a
  646. @i{symbol} prior to interning; see @ref{Effect of Readtable Case on the Lisp Reader}.
  647. As such, case in @i{symbols} is not, by default, significant.
  648. Throughout this document, except as explicitly noted otherwise,
  649. the case in which a @i{symbol} appears is not significant;
  650. that is, @t{HELLO}, @t{Hello}, @t{hElLo}, and @t{hello} are
  651. all equivalent ways to denote a symbol whose name is @t{"HELLO"}.
  652. The characters @i{backslash} and @i{vertical-bar} are used to explicitly
  653. quote the @i{case} and other parsing-related
  654. aspects
  655. of characters. As such,
  656. the notations @t{|hello|} and @t{\h\e\l\l\o} are equivalent ways
  657. to refer to a symbol whose name is @t{"hello"}, and which is @i{distinct} from
  658. any symbol whose name is @t{"HELLO"}.
  659. The @i{symbols} that correspond to @r{Common Lisp} @i{defined names}
  660. have @i{uppercase} names even though their names generally appear
  661. in @i{lowercase} in this document.
  662. @node Numbers (Objects with Multiple Notations), Use of the Dot Character, Case in Symbols, Notational Conventions
  663. @subsubsection Numbers
  664. Although @r{Common Lisp} provides a variety of ways for programs to manipulate the
  665. input and output radix for rational numbers, all numbers in this document
  666. are in decimal notation unless explicitly noted otherwise.
  667. @node Use of the Dot Character, NIL, Numbers (Objects with Multiple Notations), Notational Conventions
  668. @subsubsection Use of the Dot Character
  669. The dot appearing by itself in an @i{expression} such as
  670. @t{(@i{item1} @i{item2} @t{.} @i{tail})}
  671. means that @i{tail} represents a @i{list} of @i{objects}
  672. at the end of a list. For example,
  673. @t{(A B C @t{.} (D E F))}
  674. is notationally equivalent to:
  675. @t{(A B C D E F)}
  676. Although @i{dot} is a valid constituent character in a symbol, no
  677. @i{standardized} @i{symbols} contain the character @i{dot},
  678. so a period that follows a reference to a @i{symbol} at the end of
  679. a sentence in this document should always be interpreted as a period
  680. and never as part of the @i{symbol}'s @i{name}.
  681. For example, within this document, a sentence such as
  682. ``This sample sentence refers to the symbol @b{car}.''
  683. refers to a symbol whose name is @t{"CAR"} (with three letters),
  684. and never to a four-letter symbol @t{"CAR."}
  685. @node NIL, Designators, Use of the Dot Character, Notational Conventions
  686. @subsubsection NIL
  687. @IGindex{nil}
  688. @IGindex{()}
  689. @IRindex{nil}
  690. @b{nil} has a variety of meanings.
  691. It is a @i{symbol} in the @t{COMMON-LISP} @i{package} with the @i{name} @t{"NIL"},
  692. it is @i{boolean} (and @i{generalized boolean}) @i{false},
  693. it is the @i{empty list},
  694. and it is the @i{name} of the @i{empty type} (a @i{subtype} of all @i{types}).
  695. Within @r{Common Lisp}, @b{nil} can be notated interchangeably as either @t{NIL} or @t{()}.
  696. By convention, the choice of notation offers a hint as to which of its many
  697. roles it is playing.
  698. @group
  699. @noindent
  700. @w{ @b{For Evaluation?} @b{Notation} @b{Typically Implied Role} }
  701. @w{ ________________________________________________________}
  702. @w{ Yes @t{nil} use as a @i{boolean}. }
  703. @w{ Yes @t{'nil} use as a @i{symbol}. }
  704. @w{ Yes @t{'()} use as an @i{empty list} }
  705. @w{ No @t{nil} use as a @i{symbol} or @i{boolean}. }
  706. @w{ No @t{()} use as an @i{empty list}. }
  707. @noindent
  708. @w{ Figure 1--1: Notations for NIL }
  709. @end group
  710. Within this document only, @b{nil} is also sometimes notated as @i{false} to
  711. emphasize its role as a @i{boolean}.
  712. For example:
  713. @example
  714. (print ()) ;avoided
  715. (defun three nil 3) ;avoided
  716. '(nil nil) ;list of two symbols
  717. '(() ()) ;list of empty lists
  718. (defun three () 3) ;Emphasize empty parameter list.
  719. (append '() '()) @result{} () ;Emphasize use of empty lists
  720. (not nil) @result{} @i{true} ;Emphasize use as Boolean false
  721. (get 'nil 'color) ;Emphasize use as a symbol
  722. @end example
  723. A @i{function} is sometimes said to ``be @i{false}'' or ``be @i{true}''
  724. in some circumstance.
  725. Since no @i{function} object can be the same as @b{nil}
  726. and all @i{function} @i{objects} represent @i{true} when viewed as @i{booleans},
  727. it would be meaningless to say that the @i{function} was literally @i{false}
  728. and uninteresting to say that it was literally @i{true}.
  729. Instead, these phrases are just traditional alternative ways of saying that the
  730. @i{function} ``returns @i{false}'' or ``returns @i{true},'' respectively.
  731. @node Designators, Nonsense Words, NIL, Notational Conventions
  732. @subsubsection Designators
  733. A @i{designator}
  734. @IGindex{designator}
  735. is an @i{object} that denotes another @i{object}.
  736. Where a @i{parameter} of an @i{operator} is described as a @i{designator},
  737. the description of the @i{operator} is written in a way that assumes that
  738. the value of the @i{parameter} is the denoted @i{object};
  739. that is, that the @i{parameter} is already of the denoted @i{type}.
  740. (The specific nature of the @i{object} denoted by
  741. a ``<<@i{type}>> @i{designator}''
  742. or a ``@i{designator} for a <<@i{type}>>''
  743. can be found in the Glossary entry for ``<<@i{type}>> @i{designator}.'')
  744. For example, ``@b{nil}'' and ``the @i{value} of @b{*standard-output*}'' are operationally
  745. indistinguishable as @i{stream designators}. Similarly,
  746. the @i{symbol} @t{foo} and the @i{string} @t{"FOO"}
  747. are operationally indistinguishable as @i{string designators}.
  748. Except as otherwise noted, in a situation where the denoted @i{object}
  749. might be used multiple times, it is @i{implementation-dependent}
  750. whether the @i{object} is coerced only once or whether the coercion occurs
  751. each time the @i{object} must be used.
  752. For example, @b{mapcar} receives a @i{function designator} as an argument,
  753. and its description is written as if this were simply a function. In fact, it
  754. is @i{implementation-dependent} whether the @i{function designator} is
  755. coerced right away or whether it is carried around internally in the form that
  756. it was given as an @i{argument} and re-coerced each time it is needed. In most
  757. cases, @i{conforming programs} cannot detect the distinction, but there are some
  758. pathological situations (particularly those involving self-redefining or
  759. mutually-redefining functions) which do conform and which can detect this difference.
  760. The following program is a @i{conforming program}, but might or might not have
  761. portably correct results, depending on whether its correctness depends on one or
  762. the other of the results:
  763. @example
  764. (defun add-some (x)
  765. (defun add-some (x) (+ x 2))
  766. (+ x 1)) @result{} ADD-SOME
  767. (mapcar 'add-some '(1 2 3 4))
  768. @result{} (2 3 4 5)
  769. @i{OR}@result{} (2 4 5 6)
  770. @end example
  771. In a few rare situations, there may be a need in a dictionary entry
  772. to refer to the @i{object} that was the original @i{designator}
  773. for a @i{parameter}.
  774. Since naming the @i{parameter} would refer to the denoted @i{object},
  775. the phrase ``the <<@i{parameter-name}>> @i{designator}''
  776. can be used to refer to the @i{designator} which was the @i{argument}
  777. from which the @i{value} of <<@i{parameter-name}>> was computed.
  778. @node Nonsense Words, , Designators, Notational Conventions
  779. @subsubsection Nonsense Words
  780. @ICindex{foo}
  781. @ICindex{bar}
  782. @ICindex{baz}
  783. @ICindex{quux}
  784. When a word having no pre-attached semantics is required (@i{e.g.}, in an
  785. example), it is common in the Lisp community to use one of the words
  786. ``foo,'' ``bar,'' ``baz,'' and ``quux.'' For example, in
  787. @example
  788. (defun foo (x) (+ x 1))
  789. @end example
  790. the use of the name @t{foo} is just a shorthand way of saying
  791. ``please substitute your favorite name here.''
  792. These nonsense words have gained such prevalance of usage, that it is
  793. commonplace for newcomers to the community to begin to wonder if there
  794. is an attached semantics which they are overlooking---there is not.
  795. @node Error Terminology, Sections Not Formally Part Of This Standard, Notational Conventions, Definitions
  796. @subsection Error Terminology
  797. @IGindex{error terminology}
  798. Situations in which errors might, should, or must be signaled are described
  799. in the standard. The wording used to describe such situations is intended
  800. to have precise meaning. The following list is a glossary of those meanings.
  801. @table @asis
  802. @item @b{Safe code}
  803. @IGindex{safe}
  804. This is @i{code} processed with the @b{safety} optimization
  805. at its highest setting (@t{3}). @b{safety} is a lexical property
  806. of code. The phrase ``the function @t{F} should signal an error''
  807. means that if @t{F} is invoked from code processed with the highest
  808. @b{safety} optimization, an error is signaled.
  809. It is @i{implementation-dependent} whether @t{F} or the calling
  810. code signals the error.
  811. @item @b{Unsafe code}
  812. @IGindex{unsafe}
  813. This is code processed with lower safety levels.
  814. Unsafe code might do error checking. Implementations are permitted to
  815. treat all code as safe code all the time.
  816. @item @b{An error is signaled}
  817. @IGindex{signal}
  818. @ITindex{is signaled}
  819. @ITindex{must signal}
  820. This means that an error is signaled in both safe and unsafe code.
  821. @i{Conforming code} may rely on the fact that the error is signaled
  822. in both safe and unsafe code. Every implementation is required to
  823. detect the error in both safe and unsafe code. For example, ``an error
  824. is signaled if @b{unexport} is given a @i{symbol}
  825. not @i{accessible} in the @i{current package}.''
  826. If an explicit error type is not specified, the default is @b{error}.
  827. @item @b{An error should be signaled}
  828. @IGindex{signal}
  829. @ITindex{should signal}
  830. This means that an error is signaled in safe code, and an error
  831. might be signaled in unsafe code. @i{Conforming code} may rely on the
  832. fact that the error is signaled in safe code. Every
  833. implementation is required to detect the error at least in safe code.
  834. When the error is not signaled, the ``consequences are undefined''
  835. (see below). For example, ``@b{+} should signal an error of @i{type} @b{type-error}
  836. if any argument is not of @i{type} @b{number}.''
  837. @item @b{Should be prepared to signal an error}
  838. @IGindex{signal}
  839. @ITindex{prepared to signal}
  840. This is similar to ``should be signaled'' except that it does not
  841. imply that `extra effort' has to be taken on the part of an @i{operator}
  842. to discover an erroneous situation if the normal action of that @i{operator}
  843. can be performed successfully with only `lazy' checking.
  844. An @i{implementation} is always permitted to signal an error,
  845. but even in @i{safe} @i{code}, it is only required to signal the error
  846. when failing to signal it might lead to incorrect results.
  847. In @i{unsafe} @i{code}, the consequences are undefined.
  848. For example, defining that
  849. ``@b{find} should be prepared to signal an error of @i{type} @b{type-error}
  850. if its second @i{argument} is not a @i{proper list}''
  851. does not imply that an error is always signaled. The @i{form}
  852. @example
  853. (find 'a '(a b . c))
  854. @end example
  855. must either signal an error of @i{type} @b{type-error} in @i{safe} @i{code},
  856. else return @t{A}.
  857. In @i{unsafe} @i{code}, the consequences are undefined.
  858. By contrast,
  859. @example
  860. (find 'd '(a b . c))
  861. @end example
  862. must signal an error of @i{type} @b{type-error} in @i{safe} @i{code}.
  863. In @i{unsafe} @i{code}, the consequences are undefined.
  864. Also,
  865. @example
  866. (find 'd '#1=(a b . #1#))
  867. @end example
  868. in @i{safe code}
  869. might return @b{nil} (as an @i{implementation-defined} extension),
  870. might never return,
  871. or might signal an error of @i{type} @b{type-error}.
  872. In @i{unsafe} @i{code}, the consequences are undefined.
  873. Typically, the ``should be prepared to signal'' terminology is used in
  874. type checking situations where there are efficiency considerations that
  875. make it impractical to detect errors that are not relevant to the
  876. correct operation of the @i{operator}.
  877. @item @b{The consequences are unspecified}
  878. @ITindex{consequences}
  879. @ITindex{unspecified consequences}
  880. This means that the consequences are unpredictable but harmless.
  881. Implementations are permitted to specify the consequences of this
  882. situation. No @i{conforming code} may depend on the results or effects of
  883. this situation, and all @i{conforming code} is required to treat the
  884. results and effects of this situation as unpredictable but harmless.
  885. For example, ``if the second argument to @b{shared-initialize}
  886. specifies a name that does not correspond to any @i{slots}
  887. @i{accessible} in the @i{object}, the results are unspecified.''
  888. @item @b{The consequences are undefined}
  889. @ITindex{consequences}
  890. @ITindex{undefined consequences}
  891. This means that the consequences are unpredictable. The consequences
  892. may range from harmless to fatal. No @i{conforming code} may depend on
  893. the results or effects. @i{Conforming code} must treat the consequences as
  894. unpredictable. In places where the words ``must,'' ``must not,'' or
  895. ``may not'' are used, then ``the consequences are undefined'' if the
  896. stated requirement is not met and no specific consequence is
  897. explicitly stated. An implementation is permitted to signal an error
  898. in this case.
  899. For example: ``Once a name has been declared by @b{defconstant}
  900. to be constant, any further assignment or binding of that
  901. variable has undefined consequences.''
  902. @item @b{An error might be signaled}
  903. @IGindex{signal}
  904. @ITindex{might signal}
  905. This means that the situation has undefined consequences;
  906. however, if an error is signaled, it is of the specified @i{type}.
  907. For example, ``@b{open} might signal an error of @i{type} @b{file-error}.''
  908. @item @b{The return values are unspecified}
  909. @ITindex{unspecified values}
  910. This means that only the number and nature of the return values of a
  911. @i{form} are not specified. However, the issue of whether or not
  912. any side-effects or transfer of control occurs is still well-specified.
  913. A program can be well-specified even if it uses a function whose
  914. returns values are unspecified. For example, even if the return
  915. values of some function @t{F} are unspecified, an expression such as
  916. @t{(length (list (F)))} is still well-specified because it does not
  917. rely on any particular aspect of the value or values returned by @t{F}.
  918. @item @b{Implementations may be extended to cover this situation}
  919. @ITindex{extensions}
  920. This means that the @i{situation} has undefined consequences;
  921. however, a @i{conforming implementation} is free to treat
  922. the situation in a more specific way.
  923. For example, an @i{implementation} might define
  924. that an error is signaled,
  925. or that an error should be signaled,
  926. or even that a certain well-defined non-error behavior occurs.
  927. No @i{conforming code} may depend on the consequences of such a @i{situation};
  928. all @i{conforming code} must treat the consequences of the situation
  929. as undefined. @i{Implementations} are required to document how the
  930. situation is treated.
  931. For example, ``implementations may be extended to define other type
  932. specifiers to have a corresponding @i{class}.''
  933. @item @b{Implementations are free to extend the syntax}
  934. @ITindex{extensions}
  935. This means that in this situation implementations are permitted to
  936. define unambiguous extensions to the syntax of the @i{form} being
  937. described. No @i{conforming code} may depend on this extension.
  938. Implementations are required to document each such extension. All
  939. @i{conforming code} is required to treat the syntax as meaningless. The
  940. standard might disallow certain extensions while allowing others. For
  941. example, ``no implementation is free to extend the syntax of
  942. @b{defclass}.''
  943. @item @b{A warning might be issued}
  944. @ITindex{warning}
  945. This means that @i{implementations} are encouraged to issue a warning
  946. if the context is appropriate (@i{e.g.}, when compiling). However, a
  947. @i{conforming implementation} is not required to issue a warning.
  948. @end table
  949. @node Sections Not Formally Part Of This Standard, Interpreting Dictionary Entries, Error Terminology, Definitions
  950. @subsection Sections Not Formally Part Of This Standard
  951. Front matter and back matter, such as the ``Table of Contents,''
  952. ``Index,'' ``Figures,'' ``Credits,'' and ``Appendix'' are not considered formally
  953. part of this standard, so that we retain the flexibility needed to update
  954. these sections even at the last minute without fear of needing a formal
  955. vote to change those parts of the document. These items are quite short
  956. and very useful, however, and it is not recommended that they be removed
  957. even in an abridged version of this document.
  958. Within the concept sections, subsections whose names begin with
  959. the words ``Note'' or ``Notes'' or ``Example'' or ``Examples''
  960. are provided for illustration purposes only, and are not considered
  961. part of the standard.
  962. An attempt has been made to place these sections last in their parent section,
  963. so that they could be removed without disturbing the contiguous numbering of the
  964. surrounding sections in order to produce a document of smaller size.
  965. Likewise, the ``Examples'' and ``Notes'' sections in a dictionary entry
  966. are not considered part of the standard and could be removed if necessary.
  967. Nevertheless, the examples provide important clarifications and consistency
  968. checks for the rest of the material, and such abridging is not recommended
  969. unless absolutely unavoidable.
  970. @node Interpreting Dictionary Entries, , Sections Not Formally Part Of This Standard, Definitions
  971. @subsection Interpreting Dictionary Entries
  972. The dictionary entry for each @i{defined name} is partitioned into
  973. sections. Except as explicitly indicated otherwise below, each section
  974. is introduced by a label identifying that section. The omission of a
  975. section implies that the section is either not applicable, or would
  976. provide no interesting information.
  977. This section defines the significance of each potential section in a
  978. dictionary entry.
  979. @menu
  980. * The ``Affected By'' Section of a Dictionary Entry::
  981. * The ``Arguments'' Section of a Dictionary Entry::
  982. * The ``Arguments and Values'' Section of a Dictionary Entry::
  983. * The ``Binding Types Affected'' Section of a Dictionary Entry::
  984. * The ``Class Precedence List'' Section of a Dictionary Entry::
  985. * Dictionary Entries for Type Specifiers::
  986. * The ``Compound Type Specifier Kind'' Section of a Dictionary Entry::
  987. * The ``Compound Type Specifier Syntax'' Section of a Dictionary Entry::
  988. * The ``Compound Type Specifier Arguments'' Section of a Dictionary Entry::
  989. * The ``Compound Type Specifier Description'' Section of a Dictionary Entry::
  990. * The ``Constant Value'' Section of a Dictionary Entry::
  991. * The ``Description'' Section of a Dictionary Entry::
  992. * The ``Examples'' Section of a Dictionary Entry::
  993. * The ``Exceptional Situations'' Section of a Dictionary Entry::
  994. * The ``Initial Value'' Section of a Dictionary Entry::
  995. * The ``Argument Precedence Order'' Section of a Dictionary Entry::
  996. * The ``Method Signature'' Section of a Dictionary Entry::
  997. * The ``Name'' Section of a Dictionary Entry::
  998. * The ``Notes'' Section of a Dictionary Entry::
  999. * The ``Pronunciation'' Section of a Dictionary Entry::
  1000. * The ``See Also'' Section of a Dictionary Entry::
  1001. * The ``Side Effects'' Section of a Dictionary Entry::
  1002. * The ``Supertypes'' Section of a Dictionary Entry::
  1003. * The ``Syntax'' Section of a Dictionary Entry::
  1004. * Special ``Syntax'' Notations for Overloaded Operators::
  1005. * Naming Conventions for Rest Parameters::
  1006. * Requiring Non-Null Rest Parameters in the ``Syntax'' Section::
  1007. * Return values in the ``Syntax'' Section::
  1008. * No Arguments or Values in the ``Syntax'' Section::
  1009. * Unconditional Transfer of Control in the ``Syntax'' Section::
  1010. * The ``Valid Context'' Section of a Dictionary Entry::
  1011. * The ``Value Type'' Section of a Dictionary Entry::
  1012. @end menu
  1013. @node The ``Affected By'' Section of a Dictionary Entry, The ``Arguments'' Section of a Dictionary Entry, Interpreting Dictionary Entries, Interpreting Dictionary Entries
  1014. @subsubsection The ``Affected By'' Section of a Dictionary Entry
  1015. For an @i{operator}, anything that can affect the side effects of
  1016. or @i{values} returned by the @i{operator}.
  1017. For a @i{variable}, anything that can affect the @i{value} of the @i{variable}
  1018. including @i{functions} that bind or assign it.
  1019. @node The ``Arguments'' Section of a Dictionary Entry, The ``Arguments and Values'' Section of a Dictionary Entry, The ``Affected By'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1020. @subsubsection The ``Arguments'' Section of a Dictionary Entry
  1021. This information describes the syntax information of entries such as those for
  1022. @i{declarations} and special @i{expressions} which are never @i{evaluated}
  1023. as @i{forms}, and so do not return @i{values}.
  1024. @node The ``Arguments and Values'' Section of a Dictionary Entry, The ``Binding Types Affected'' Section of a Dictionary Entry, The ``Arguments'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1025. @subsubsection The ``Arguments and Values'' Section of a Dictionary Entry
  1026. An English language description of what @i{arguments} the @i{operator} accepts
  1027. and what @i{values} it returns, including information about defaults for @i{parameters}
  1028. corresponding to omittable @i{arguments}
  1029. (such as @i{optional parameters} and @i{keyword parameters}).
  1030. For @i{special operators} and @i{macros},
  1031. their @i{arguments} are not @i{evaluated} unless it is explicitly stated in their
  1032. descriptions that they are @i{evaluated}.
  1033. @node The ``Binding Types Affected'' Section of a Dictionary Entry, The ``Class Precedence List'' Section of a Dictionary Entry, The ``Arguments and Values'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1034. @subsubsection The ``Binding Types Affected'' Section of a Dictionary Entry
  1035. This information alerts the reader to the kinds of @i{bindings} that might
  1036. potentially be affected by a declaration. Whether in fact any particular such
  1037. @i{binding} is actually affected is dependent on additional factors as well.
  1038. See the ``Description'' section of the declaration in question for details.
  1039. @node The ``Class Precedence List'' Section of a Dictionary Entry, Dictionary Entries for Type Specifiers, The ``Binding Types Affected'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1040. @subsubsection The ``Class Precedence List'' Section of a Dictionary Entry
  1041. This appears in the dictionary entry for a @i{class},
  1042. and contains an ordered list of the @i{classes} defined
  1043. by @r{Common Lisp} that must be in the @i{class precedence list} of this @i{class}.
  1044. It is permissible for other (@i{implementation-defined}) @i{classes}
  1045. to appear in the @i{implementation}'s @i{class precedence list} for the @i{class}.
  1046. It is permissible for
  1047. either @b{standard-object}
  1048. or @b{structure-object}
  1049. to appear in the @i{implementation}'s @i{class precedence list};
  1050. for details, see @ref{Type Relationships}.
  1051. Except as explicitly indicated otherwise somewhere in this specification,
  1052. no additional @i{standardized} @i{classes} may appear in
  1053. the @i{implementation}'s @i{class precedence list}.
  1054. By definition of the relationship between @i{classes} and @i{types},
  1055. the @i{classes} listed in this section are also @i{supertypes} of
  1056. the @i{type} denoted by the @i{class}.
  1057. @node Dictionary Entries for Type Specifiers, The ``Compound Type Specifier Kind'' Section of a Dictionary Entry, The ``Class Precedence List'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1058. @subsubsection Dictionary Entries for Type Specifiers
  1059. The @i{atomic type specifiers} are those @i{defined names}
  1060. listed in @i{Figure~4--2}.
  1061. Such dictionary entries are of kind
  1062. ``Class,'' ``Condition Type,'' ``System Class,'' or ``Type.''
  1063. A description of how to interpret
  1064. a @i{symbol} naming one of these @i{types} or @i{classes}
  1065. as an @i{atomic type specifier}
  1066. is found in the ``Description'' section of such dictionary entries.
  1067. The @i{compound type specifiers} are those @i{defined names}
  1068. listed in @i{Figure~4--3}.
  1069. Such dictionary entries are of kind ``Class,'' ``System Class,''
  1070. ``Type,'' or ``Type Specifier.''
  1071. A description of how to interpret as a @i{compound type specifier}
  1072. a @i{list} whose @i{car} is such a @i{symbol}
  1073. is found in the
  1074. ``Compound Type Specifier Kind,''
  1075. ``Compound Type Specifier Syntax,''
  1076. ``Compound Type Specifier Arguments,''
  1077. and ``Compound Type Specifier Description''
  1078. sections of such dictionary entries.
  1079. @node The ``Compound Type Specifier Kind'' Section of a Dictionary Entry, The ``Compound Type Specifier Syntax'' Section of a Dictionary Entry, Dictionary Entries for Type Specifiers, Interpreting Dictionary Entries
  1080. @subsubsection The ``Compound Type Specifier Kind'' Section of a Dictionary Entry
  1081. An ``abbreviating'' @i{type specifier} is one that describes a @i{subtype}
  1082. for which it is in principle possible to enumerate the @i{elements},
  1083. but for which in practice it is impractical to do so.
  1084. A ``specializing'' @i{type specifier} is one that describes a @i{subtype}
  1085. by restricting the @i{type} of one or more components of the @i{type},
  1086. such as @i{element type} or @i{complex part type}.
  1087. A ``predicating'' @i{type specifier} is one that describes a @i{subtype}
  1088. containing only those @i{objects} that satisfy a given @i{predicate}.
  1089. A ``combining'' @i{type specifier} is one that describes a @i{subtype}
  1090. in a compositional way, using combining operations (such as ``and,'' ``or,'' and
  1091. ``not'') on other @i{types}.
  1092. @node The ``Compound Type Specifier Syntax'' Section of a Dictionary Entry, The ``Compound Type Specifier Arguments'' Section of a Dictionary Entry, The ``Compound Type Specifier Kind'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1093. @subsubsection The ``Compound Type Specifier Syntax'' Section of a Dictionary Entry
  1094. This information about a @i{type} describes the syntax of a
  1095. @i{compound type specifier} for that @i{type}.
  1096. Whether or not the @i{type} is acceptable as an @i{atomic type specifier}
  1097. is not represented here; see @ref{Dictionary Entries for Type Specifiers}.
  1098. @node The ``Compound Type Specifier Arguments'' Section of a Dictionary Entry, The ``Compound Type Specifier Description'' Section of a Dictionary Entry, The ``Compound Type Specifier Syntax'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1099. @subsubsection The ``Compound Type Specifier Arguments'' Section of a Dictionary Entry
  1100. This information describes @i{type} information for the structures defined in
  1101. the ``Compound Type Specifier Syntax'' section.
  1102. @node The ``Compound Type Specifier Description'' Section of a Dictionary Entry, The ``Constant Value'' Section of a Dictionary Entry, The ``Compound Type Specifier Arguments'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1103. @subsubsection The ``Compound Type Specifier Description'' Section of a Dictionary Entry
  1104. This information describes the meaning of the structures defined in
  1105. the ``Compound Type Specifier Syntax'' section.
  1106. @node The ``Constant Value'' Section of a Dictionary Entry, The ``Description'' Section of a Dictionary Entry, The ``Compound Type Specifier Description'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1107. @subsubsection The ``Constant Value'' Section of a Dictionary Entry
  1108. This information describes the unchanging @i{type} and @i{value} of
  1109. a @i{constant variable}.
  1110. @node The ``Description'' Section of a Dictionary Entry, The ``Examples'' Section of a Dictionary Entry, The ``Constant Value'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1111. @subsubsection The ``Description'' Section of a Dictionary Entry
  1112. A summary of the @i{operator} and all intended aspects of the @i{operator},
  1113. but does not necessarily include all the fields referenced below it
  1114. (``Side Effects,'' ``Exceptional Situations,'' @i{etc.})
  1115. @node The ``Examples'' Section of a Dictionary Entry, The ``Exceptional Situations'' Section of a Dictionary Entry, The ``Description'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1116. @subsubsection The ``Examples'' Section of a Dictionary Entry
  1117. Examples of use of the @i{operator}.
  1118. These examples are not considered part of the standard;
  1119. see @ref{Sections Not Formally Part Of This Standard}.
  1120. @node The ``Exceptional Situations'' Section of a Dictionary Entry, The ``Initial Value'' Section of a Dictionary Entry, The ``Examples'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1121. @subsubsection The ``Exceptional Situations'' Section of a Dictionary Entry
  1122. Three kinds of information may appear here:
  1123. @table @asis
  1124. @item @t{*}
  1125. Situations that are detected by the @i{function} and formally signaled.
  1126. @item @t{*}
  1127. Situations that are handled by the @i{function}.
  1128. @item @t{*}
  1129. Situations that may be detected by the @i{function}.
  1130. @end table
  1131. This field does not include conditions that could
  1132. be signaled by @i{functions} passed to and called by this @i{operator}
  1133. as arguments or through dynamic variables, nor by executing subforms of this
  1134. operator if it is a @i{macro} or @i{special operator}.
  1135. @node The ``Initial Value'' Section of a Dictionary Entry, The ``Argument Precedence Order'' Section of a Dictionary Entry, The ``Exceptional Situations'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1136. @subsubsection The ``Initial Value'' Section of a Dictionary Entry
  1137. This information describes the initial @i{value} of a @i{dynamic variable}.
  1138. Since this variable might change, see @i{type} restrictions in the ``Value Type'' section.
  1139. @node The ``Argument Precedence Order'' Section of a Dictionary Entry, The ``Method Signature'' Section of a Dictionary Entry, The ``Initial Value'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1140. @subsubsection The ``Argument Precedence Order'' Section of a Dictionary Entry
  1141. This information describes the argument precedence order.
  1142. If it is omitted, the argument precedence order is the default (left to right).
  1143. @node The ``Method Signature'' Section of a Dictionary Entry, The ``Name'' Section of a Dictionary Entry, The ``Argument Precedence Order'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1144. @subsubsection The ``Method Signature'' Section of a Dictionary Entry
  1145. The description of a @i{generic function} includes descriptions of the
  1146. @i{methods} that are defined on that @i{generic function} by the standard.
  1147. A method signature is used to describe the @i{parameters} and
  1148. @i{parameter specializers} for each @i{method}.
  1149. @i{Methods} defined for the @i{generic function} must be of the form described
  1150. by the @i{method} @i{signature}.
  1151. @code{F} @i{@r{(}@i{x} @i{class}@r{)}
  1152. @r{(}@i{y} t@r{)}
  1153. {&optional} @i{z} {&key} @i{k}}
  1154. @noindent
  1155. This @i{signature} indicates that this method on the @i{generic function}
  1156. @b{F} has two @i{required parameters}:
  1157. @i{x}, which must be a @i{generalized instance} of the @i{class} @i{class};
  1158. and @i{y}, which can be any @i{object}
  1159. (@i{i.e.}, a @i{generalized instance} of the @i{class} @b{t}).
  1160. In addition, there is an @i{optional parameter} @i{z} and a
  1161. @i{keyword parameter} @i{k}. This @i{signature} also indicates that this
  1162. method on @t{F} is a @i{primary method} and has no @i{qualifiers}.
  1163. For each @i{parameter}, the @i{argument} supplied must be in the
  1164. intersection of the @i{type} specified in the description of the
  1165. corresponding @i{generic function} and the @i{type} given in
  1166. the @i{signature} of some @i{method} (including not only those
  1167. @i{methods} defined in this specification, but also
  1168. @i{implementation-defined} or user-defined @i{methods} in situations
  1169. where the definition of such @i{methods} is permitted).
  1170. @node The ``Name'' Section of a Dictionary Entry, The ``Notes'' Section of a Dictionary Entry, The ``Method Signature'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1171. @subsubsection The ``Name'' Section of a Dictionary Entry
  1172. This section introduces the dictionary entry. It is not explicitly labeled.
  1173. It appears preceded and followed by a horizontal bar.
  1174. In large print at left, the @i{defined name} appears; if more than one
  1175. @i{defined name} is to be described by the entry, all such @i{names}
  1176. are shown separated by commas.
  1177. In somewhat smaller italic print at right is an indication of what kind
  1178. of dictionary entry this is. Possible values are:
  1179. @table @asis
  1180. @item @i{Accessor}
  1181. This is an @i{accessor} @i{function}.
  1182. @item @i{Class}
  1183. This is a @i{class}.
  1184. @item @i{Condition Type}
  1185. This is a @i{subtype} of @i{type} @b{condition}.
  1186. @item @i{Constant Variable}
  1187. This is a @i{constant variable}.
  1188. @item @i{Declaration}
  1189. This is a @i{declaration identifier}.
  1190. @item @i{Function}
  1191. This is a @i{function}.
  1192. @item @i{Local Function}
  1193. This is a @i{function} that is defined only lexically within the scope of some
  1194. other @i{macro form}.
  1195. @item @i{Local Macro}
  1196. This is a @i{macro} that is defined only lexically within the scope of some
  1197. other @i{macro form}.
  1198. @item @i{Macro}
  1199. This is a @i{macro}.
  1200. @item @i{Restart}
  1201. This is a @i{restart}.
  1202. @item @i{Special Operator}
  1203. This is a @i{special operator}.
  1204. @item @i{Standard Generic Function}
  1205. This is a @i{standard generic function}.
  1206. @item @i{Symbol}
  1207. This is a @i{symbol} that is specially recognized in some particular situation,
  1208. such as the syntax of a @i{macro}.
  1209. @item @i{System Class}
  1210. This is like @i{class}, but it identifies a @i{class} that is potentially
  1211. a @i{built-in class}. (No @i{class} is actually required to be a
  1212. @i{built-in class}.)
  1213. @item @i{Type}
  1214. This is an @i{atomic type specifier},
  1215. and depending on information for each particular entry,
  1216. may subject to form other @i{type specifiers}.
  1217. @item @i{Type Specifier}
  1218. This is a @i{defined name} that is not an @i{atomic type specifier},
  1219. but that can be used in constructing valid @i{type specifiers}.
  1220. @item @i{Variable}
  1221. This is a @i{dynamic variable}.
  1222. @end table
  1223. @node The ``Notes'' Section of a Dictionary Entry, The ``Pronunciation'' Section of a Dictionary Entry, The ``Name'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1224. @subsubsection The ``Notes'' Section of a Dictionary Entry
  1225. Information not found elsewhere in this description
  1226. which pertains to this @i{operator}.
  1227. Among other things, this might include
  1228. cross reference information,
  1229. code equivalences,
  1230. stylistic hints,
  1231. implementation hints,
  1232. typical uses.
  1233. This information is not considered part of the standard;
  1234. any @i{conforming implementation} or @i{conforming program}
  1235. is permitted to ignore the presence of this information.
  1236. @node The ``Pronunciation'' Section of a Dictionary Entry, The ``See Also'' Section of a Dictionary Entry, The ``Notes'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1237. @subsubsection The ``Pronunciation'' Section of a Dictionary Entry
  1238. This offers a suggested pronunciation for @i{defined names}
  1239. so that people not in verbal communication with the original designers
  1240. can figure out how to pronounce words that are not in normal English usage.
  1241. This information is advisory only, and is not considered part of the standard.
  1242. For brevity, it is only provided for entries with names that are specific to
  1243. @r{Common Lisp} and would not be found in {Webster's Third New International Dictionary
  1244. the English Language, Unabridged}.
  1245. @node The ``See Also'' Section of a Dictionary Entry, The ``Side Effects'' Section of a Dictionary Entry, The ``Pronunciation'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1246. @subsubsection The ``See Also'' Section of a Dictionary Entry
  1247. List of references to other parts of this standard
  1248. that offer information relevant to this @i{operator}.
  1249. This list is not part of the standard.
  1250. @node The ``Side Effects'' Section of a Dictionary Entry, The ``Supertypes'' Section of a Dictionary Entry, The ``See Also'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1251. @subsubsection The ``Side Effects'' Section of a Dictionary Entry
  1252. Anything that is changed as a result of the
  1253. evaluation of the @i{form} containing this @i{operator}.
  1254. @node The ``Supertypes'' Section of a Dictionary Entry, The ``Syntax'' Section of a Dictionary Entry, The ``Side Effects'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1255. @subsubsection The ``Supertypes'' Section of a Dictionary Entry
  1256. This appears in the dictionary entry for a @i{type},
  1257. and contains a list of the @i{standardized} @i{types}
  1258. that must be @i{supertypes} of this @i{type}.
  1259. In @i{implementations} where there is a corresponding @i{class},
  1260. the order of the @i{classes} in the @i{class precedence list}
  1261. is consistent with the order presented in this section.
  1262. @node The ``Syntax'' Section of a Dictionary Entry, Special ``Syntax'' Notations for Overloaded Operators, The ``Supertypes'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1263. @subsubsection The ``Syntax'' Section of a Dictionary Entry
  1264. This section describes how to use the @i{defined name} in code.
  1265. The ``Syntax'' description for a @i{generic function}
  1266. describes the @i{lambda list} of the @i{generic function} itself,
  1267. while the ``Method Signatures'' describe the @i{lambda lists}
  1268. of the defined @i{methods}.
  1269. The ``Syntax'' description for
  1270. an @i{ordinary function},
  1271. a @i{macro},
  1272. or a @i{special operator}
  1273. describes its @i{parameters}.
  1274. For example, an @i{operator} description might say:
  1275. @code{F} @i{x y {&optional} z {&key} k}
  1276. @noindent
  1277. This description indicates that the function @b{F}
  1278. has two required parameters, @i{x} and @i{y}. In addition,
  1279. there is an optional parameter @i{z} and a keyword parameter @i{k}.
  1280. For @i{macros} and @i{special operators}, syntax is given
  1281. in modified BNF notation; see @ref{Modified BNF Syntax}.
  1282. For @i{functions} a @i{lambda list} is given.
  1283. In both cases, however, the outermost parentheses are omitted,
  1284. and default value information is omitted.
  1285. @node Special ``Syntax'' Notations for Overloaded Operators, Naming Conventions for Rest Parameters, The ``Syntax'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1286. @subsubsection Special ``Syntax'' Notations for Overloaded Operators
  1287. If two descriptions exist for the same operation but with different numbers of
  1288. arguments, then the extra arguments are to be treated as optional. For example,
  1289. this pair of lines:
  1290. @code{file-position} @i{stream} @result{} @i{position}
  1291. @code{file-position} @i{stream position-spec} @result{} @i{success-p}
  1292. @noindent
  1293. is operationally equivalent to this line:
  1294. @code{file-position} @i{stream {&optional} position-spec} @result{} @i{result}
  1295. @noindent
  1296. and differs only in that it provides on opportunity to introduce different
  1297. names for @i{parameter} and @i{values} for each case.
  1298. The separated (multi-line) notation is used when an @i{operator} is overloaded in
  1299. such a way that the @i{parameters} are used in different ways
  1300. depending on how many @i{arguments} are supplied (@i{e.g.}, for the @i{function} @b{/})
  1301. or the return values are different in the two cases (@i{e.g.}, for the @i{function} @b{file-position}).
  1302. @node Naming Conventions for Rest Parameters, Requiring Non-Null Rest Parameters in the ``Syntax'' Section, Special ``Syntax'' Notations for Overloaded Operators, Interpreting Dictionary Entries
  1303. @subsubsection Naming Conventions for Rest Parameters
  1304. Within this specification,
  1305. if the name of a @i{rest parameter} is chosen to be a plural noun,
  1306. use of that name in @i{parameter} font refers
  1307. to the @i{list} to which the @i{rest parameter} is bound.
  1308. Use of the singular form of that name in @i{parameter} font refers
  1309. to an @i{element} of that @i{list}.
  1310. For example, given a syntax description such as:
  1311. @code{F} @i{{&rest} @i{arguments}}
  1312. @noindent
  1313. it is appropriate to refer either to the @i{rest parameter} named
  1314. @i{arguments} by name, or to one of its elements by speaking of ``an @i{argument},''
  1315. ``some @i{argument},'' ``each @i{argument}'' @i{etc.}
  1316. @node Requiring Non-Null Rest Parameters in the ``Syntax'' Section, Return values in the ``Syntax'' Section, Naming Conventions for Rest Parameters, Interpreting Dictionary Entries
  1317. @subsubsection Requiring Non-Null Rest Parameters in the ``Syntax'' Section
  1318. In some cases it is useful to refer to all arguments equally as a single
  1319. aggregation using a @i{rest parameter} while at the same time
  1320. requiring at least one argument. A variety of imperative and
  1321. declarative means are available in @i{code} for expressing such a
  1322. restriction, however they generally do not manifest themselves in a
  1323. @i{lambda list}. For descriptive purposes within this specification,
  1324. @code{F} @i{{&rest} arguments^+}
  1325. @noindent
  1326. means the same as
  1327. @code{F} @i{{&rest} arguments}
  1328. @noindent
  1329. but introduces the additional requirement that there be
  1330. at least one @i{argument}.
  1331. @node Return values in the ``Syntax'' Section, No Arguments or Values in the ``Syntax'' Section, Requiring Non-Null Rest Parameters in the ``Syntax'' Section, Interpreting Dictionary Entries
  1332. @subsubsection Return values in the ``Syntax'' Section
  1333. An evaluation arrow ``{@result{} }'' precedes a list of @i{values} to be returned.
  1334. For example:
  1335. @code{F} @i{a b c} @result{} @i{x}
  1336. @noindent
  1337. indicates that @t{F} is an operator that has three @i{required parameters}
  1338. (@i{i.e.}, @i{a}, @i{b}, and @i{c}) and that returns one @i{value} (@i{i.e.}, @i{x}).
  1339. If more than one @i{value} is returned by an operator, the @i{names} of the
  1340. @i{values} are separated by commas, as in:
  1341. @code{F} @i{a b c} @result{} @i{x, y, z}
  1342. @node No Arguments or Values in the ``Syntax'' Section, Unconditional Transfer of Control in the ``Syntax'' Section, Return values in the ``Syntax'' Section, Interpreting Dictionary Entries
  1343. @subsubsection No Arguments or Values in the ``Syntax'' Section
  1344. If no @i{arguments} are permitted, or no @i{values} are returned,
  1345. a special notation is used to make this more visually apparent. For example,
  1346. @code{F} @i{<@i{no @i{arguments}}>} @result{} @i{<@i{no @i{values}}>}
  1347. indicates that @t{F} is an operator that accepts no @i{arguments} and returns
  1348. no @i{values}.
  1349. @node Unconditional Transfer of Control in the ``Syntax'' Section, The ``Valid Context'' Section of a Dictionary Entry, No Arguments or Values in the ``Syntax'' Section, Interpreting Dictionary Entries
  1350. @subsubsection Unconditional Transfer of Control in the ``Syntax'' Section
  1351. Some @i{operators} perform an unconditional transfer of control, and
  1352. so never have any return values. Such @i{operators} are notated using
  1353. a notation such as the following:
  1354. @code{F} @i{a b c}
  1355. @result{} #<NoValue>
  1356. @node The ``Valid Context'' Section of a Dictionary Entry, The ``Value Type'' Section of a Dictionary Entry, Unconditional Transfer of Control in the ``Syntax'' Section, Interpreting Dictionary Entries
  1357. @subsubsection The ``Valid Context'' Section of a Dictionary Entry
  1358. This information is used by dictionary entries such as ``Declarations''
  1359. in order to restrict the context in which the declaration may appear.
  1360. A given ``Declaration'' might appear in
  1361. a @i{declaration} (@i{i.e.}, a @b{declare} @i{expression}),
  1362. a @i{proclamation} (@i{i.e.}, a @b{declaim} or @b{proclaim} @i{form}),
  1363. or both.
  1364. @node The ``Value Type'' Section of a Dictionary Entry, , The ``Valid Context'' Section of a Dictionary Entry, Interpreting Dictionary Entries
  1365. @subsubsection The ``Value Type'' Section of a Dictionary Entry
  1366. This information describes any @i{type} restrictions on a @i{dynamic variable}.
  1367. @c end of including concept-definitions
  1368. @node Conformance, Language Extensions, Definitions, Introduction (Introduction)
  1369. @section Conformance
  1370. @c including concept-conformance
  1371. This standard presents the syntax and semantics to be implemented by a
  1372. @i{conforming implementation} (and its accompanying documentation).
  1373. In addition, it imposes requirements on @i{conforming programs}.
  1374. @menu
  1375. * Conforming Implementations::
  1376. * Conforming Programs::
  1377. @end menu
  1378. @node Conforming Implementations, Conforming Programs, Conformance, Conformance
  1379. @subsection Conforming Implementations
  1380. A @i{conforming implementation}
  1381. @IGindex{conforming implementation}
  1382. shall adhere to the requirements outlined
  1383. in this section.
  1384. @menu
  1385. * Required Language Features::
  1386. * Documentation of Implementation-Dependent Features::
  1387. * Documentation of Extensions::
  1388. * Treatment of Exceptional Situations::
  1389. * Resolution of Apparent Conflicts in Exceptional Situations::
  1390. * Examples of Resolution of Apparent Conflict in Exceptional Situations::
  1391. * Conformance Statement::
  1392. @end menu
  1393. @node Required Language Features, Documentation of Implementation-Dependent Features, Conforming Implementations, Conforming Implementations
  1394. @subsubsection Required Language Features
  1395. A @i{conforming implementation} shall accept all features
  1396. (including deprecated features)
  1397. of the language specified in this standard,
  1398. with the meanings defined in this standard.
  1399. A @i{conforming implementation} shall not require the inclusion of substitute
  1400. or additional language elements in code in order to accomplish a feature of
  1401. the language that is specified in this standard.
  1402. @node Documentation of Implementation-Dependent Features, Documentation of Extensions, Required Language Features, Conforming Implementations
  1403. @subsubsection Documentation of Implementation-Dependent Features
  1404. A @i{conforming implementation} shall be accompanied by a document
  1405. that provides a definition of all @i{implementation-defined}
  1406. aspects of the language defined by this specification.
  1407. In addition, a @i{conforming implementation} is encouraged (but not required)
  1408. to document items in this standard that are identified as
  1409. @i{implementation-dependent}, although in some cases
  1410. such documentation might simply identify the item as ``undefined.''
  1411. @node Documentation of Extensions, Treatment of Exceptional Situations, Documentation of Implementation-Dependent Features, Conforming Implementations
  1412. @subsubsection Documentation of Extensions
  1413. A @i{conforming implementation} shall be accompanied by a
  1414. document that separately describes any features accepted by the
  1415. @i{implementation} that are not specified in this standard, but that do not
  1416. cause any ambiguity or contradiction when added to the language
  1417. standard. Such extensions shall be described as being ``extensions to
  1418. @r{Common Lisp} as specified by ANSI <<@i{standard number}>>.''
  1419. @node Treatment of Exceptional Situations, Resolution of Apparent Conflicts in Exceptional Situations, Documentation of Extensions, Conforming Implementations
  1420. @subsubsection Treatment of Exceptional Situations
  1421. A @i{conforming implementation} shall treat exceptional situations
  1422. in a manner consistent with this specification.
  1423. @node Resolution of Apparent Conflicts in Exceptional Situations, Examples of Resolution of Apparent Conflict in Exceptional Situations, Treatment of Exceptional Situations, Conforming Implementations
  1424. @subsubsection Resolution of Apparent Conflicts in Exceptional Situations
  1425. If more than one passage in this specification appears to apply to the
  1426. same situation but in conflicting ways, the passage that appears
  1427. to describe the situation in the most specific way (not necessarily the
  1428. passage that provides the most constrained kind of error detection)
  1429. takes precedence.
  1430. @node Examples of Resolution of Apparent Conflict in Exceptional Situations, Conformance Statement, Resolution of Apparent Conflicts in Exceptional Situations, Conforming Implementations
  1431. @subsubsection Examples of Resolution of Apparent Conflict in Exceptional Situations
  1432. Suppose that function @t{foo} is a member of a set S of @i{functions} that
  1433. operate on numbers. Suppose that one passage states that an error must be
  1434. signaled if any @i{function} in S is ever given an argument of @t{17}.
  1435. Suppose that an apparently conflicting passage states that the consequences
  1436. are undefined if @t{foo} receives an argument of @t{17}. Then the second passage
  1437. (the one specifically about @t{foo}) would dominate because the description of
  1438. the situational context is the most specific, and it would not be required that
  1439. @t{foo} signal an error on an argument of @t{17} even though other functions in
  1440. the set S would be required to do so.
  1441. @node Conformance Statement, , Examples of Resolution of Apparent Conflict in Exceptional Situations, Conforming Implementations
  1442. @subsubsection Conformance Statement
  1443. A @i{conforming implementation} shall produce a conformance statement
  1444. as a consequence of using the implementation, or that statement
  1445. shall be included in the accompanying documentation. If the implementation
  1446. conforms in all respects with this standard, the conformance statement
  1447. shall be
  1448. @table @asis
  1449. @item @t{}
  1450. ``<<@i{Implementation}>> conforms with the requirements
  1451. of ANSI <<@i{standard number}>>''
  1452. @end table
  1453. If the @i{implementation} conforms with some but not all of the requirements of this
  1454. standard, then the conformance statement shall be
  1455. @table @asis
  1456. @item @t{}
  1457. ``<<@i{Implementation}>> conforms with the requirements of
  1458. ANSI <<@i{standard number}>> with the following exceptions:
  1459. <<@i{reference to or complete list of the requirements of
  1460. the standard with which the implementation does not conform}>>.''
  1461. @end table
  1462. @node Conforming Programs, , Conforming Implementations, Conformance
  1463. @subsection Conforming Programs
  1464. @IGindex{conforming program}
  1465. @IGindex{conforming code}
  1466. Code conforming with the requirements of this standard shall adhere to the
  1467. following:
  1468. @table @asis
  1469. @item 1.
  1470. @i{Conforming code} shall use only those features of the
  1471. language syntax and semantics that are
  1472. either specified in this standard
  1473. or defined using the extension mechanisms
  1474. specified in the standard.
  1475. @item 2.
  1476. @i{Conforming code} shall not rely on any particular
  1477. interpretation of @i{implementation-dependent} features.
  1478. @item 3.
  1479. @i{Conforming code} shall not depend on the consequences
  1480. of undefined or unspecified situations.
  1481. @item 4.
  1482. @i{Conforming code} does not use any constructions
  1483. that are prohibited by the standard.
  1484. @item 5.
  1485. @i{Conforming code} does not depend on extensions
  1486. included in an implementation.
  1487. @end table
  1488. @menu
  1489. * Use of Implementation-Defined Language Features::
  1490. * Use of Read-Time Conditionals::
  1491. @end menu
  1492. @node Use of Implementation-Defined Language Features, Use of Read-Time Conditionals, Conforming Programs, Conforming Programs
  1493. @subsubsection Use of Implementation-Defined Language Features
  1494. Note that @i{conforming code} may rely on particular
  1495. @i{implementation-defined} values or features. Also note that the
  1496. requirements for @i{conforming code} and @i{conforming implementations} do not
  1497. require that the results produced by conforming code always be the
  1498. same when processed by a @i{conforming implementation}. The results may be the
  1499. same, or they may differ.
  1500. @i{Portable code} is written using only @i{standard characters}.
  1501. Conforming code may run in all conforming implementations, but might
  1502. have allowable @i{implementation-defined} behavior that makes it
  1503. non-portable code.
  1504. For example, the following are examples of @i{forms} that are conforming, but
  1505. that might return different @i{values} in different implementations:
  1506. @example
  1507. (evenp most-positive-fixnum) @result{} @i{implementation-dependent}
  1508. (random) @result{} @i{implementation-dependent}
  1509. (> lambda-parameters-limit 93) @result{} @i{implementation-dependent}
  1510. (char-name #\A) @result{} @i{implementation-dependent}
  1511. @end example
  1512. @node Use of Read-Time Conditionals, , Use of Implementation-Defined Language Features, Conforming Programs
  1513. @subsubsection Use of Read-Time Conditionals
  1514. Use of @t{#+} and @t{#-} does not automatically disqualify a program
  1515. from being conforming. A program which uses @t{#+} and @t{#-} is
  1516. considered conforming if there is no set of @i{features} in which the
  1517. program would not be conforming. Of course, @i{conforming programs} are
  1518. not necessarily working programs. The following program is conforming:
  1519. @example
  1520. (defun foo ()
  1521. #+ACME (acme:initialize-something)
  1522. (print 'hello-there))
  1523. @end example
  1524. However, this program might or might not work, depending on whether the
  1525. presence of the feature @t{ACME} really implies that a function named
  1526. @t{acme:initialize-something} is present in the environment. In effect,
  1527. using @t{#+} or @t{#-} in a @i{conforming program} means that the variable
  1528. @b{*features*}
  1529. @IRindex{*features*}
  1530. becomes just one more piece of input data to that
  1531. program. Like any other data coming into a program, the programmer
  1532. is responsible for assuring that the program does not make unwarranted
  1533. assumptions on the basis of input data.
  1534. @c end of including concept-conformance
  1535. @node Language Extensions, Language Subsets, Conformance, Introduction (Introduction)
  1536. @section Language Extensions
  1537. @c including concept-extensions
  1538. A language extension is any documented @i{implementation-defined} behavior
  1539. of a @i{defined name} in this standard that varies from the
  1540. behavior described in this standard, or a documented consequence of a
  1541. situation that the standard specifies as undefined, unspecified, or
  1542. extendable by the implementation. For example, if this standard says
  1543. that ``the results are unspecified,'' an extension would be to specify
  1544. the results.
  1545. [Reviewer Note by Barmar: This contradicts previous definitions of conforming code.]
  1546. If the correct behavior of a program depends on the results provided
  1547. by an extension, only implementations with the same extension will
  1548. execute the program correctly. Note that such a program might be
  1549. non-conforming. Also, if this standard says that ``an implementation
  1550. may be extended,'' a conforming, but possibly non-portable, program
  1551. can be written using an extension.
  1552. An implementation can have extensions, provided they do not alter the
  1553. behavior of conforming code and provided they are not explicitly
  1554. prohibited by this standard.
  1555. The term ``extension'' refers only to extensions available upon
  1556. startup. An implementation is free to allow or prohibit redefinition
  1557. of an extension.
  1558. The following list contains specific guidance to implementations
  1559. concerning certain types of extensions.
  1560. @table @asis
  1561. @item @b{Extra return values}
  1562. An implementation must return exactly
  1563. the number of return values specified by this standard unless the
  1564. standard specifically indicates otherwise.
  1565. @item @b{Unsolicited messages}
  1566. No output can be produced by a function other than that specified in
  1567. the standard or due to the signaling of @i{conditions}
  1568. detected by the function.
  1569. Unsolicited output, such as garbage collection notifications and
  1570. autoload heralds, should not go directly to the @i{stream}
  1571. that is the value of a @i{stream} variable defined in this
  1572. standard, but can go indirectly to @i{terminal I/O} by using a
  1573. @i{synonym stream} to @b{*terminal-io*}.
  1574. Progress reports from such functions as @b{load} and
  1575. @b{compile} are considered solicited, and are not covered by
  1576. this prohibition.
  1577. @item @b{Implementation of macros and special forms}
  1578. @i{Macros} and @i{special operators} defined in this standard
  1579. must not be @i{functions}.
  1580. @end table
  1581. @c end of including concept-extensions
  1582. @node Language Subsets, Deprecated Language Features, Language Extensions, Introduction (Introduction)
  1583. @section Language Subsets
  1584. @c including concept-subsets
  1585. The language described in this standard contains no subsets,
  1586. though subsets are not forbidden.
  1587. For a language to be considered a subset,
  1588. it must have the property that any valid @i{program} in that language
  1589. has equivalent semantics and will run directly
  1590. (with no extralingual pre-processing, and no special compatibility packages)
  1591. in any @i{conforming implementation} of the full language.
  1592. A language that conforms to this requirement shall be described
  1593. as being a ``subset of @r{Common Lisp} as specified by ANSI <<@i{standard number}>>.''
  1594. @c end of including concept-subsets
  1595. @node Deprecated Language Features, Symbols in the COMMON-LISP Package, Language Subsets, Introduction (Introduction)
  1596. @section Deprecated Language Features
  1597. @c including concept-deprecated
  1598. Deprecated language features are not expected to appear in future @r{Common Lisp}
  1599. standards, but are required to be implemented for conformance with this
  1600. standard; see @ref{Required Language Features}.
  1601. @i{Conforming programs} can use deprecated features;
  1602. however, it is considered good programming style to avoid them.
  1603. It is permissible for the compiler to produce @i{style warnings}
  1604. about the use of such features at compile time,
  1605. but there should be no such warnings at program execution time.
  1606. @menu
  1607. * Deprecated Functions::
  1608. * Deprecated Argument Conventions::
  1609. * Deprecated Variables::
  1610. * Deprecated Reader Syntax::
  1611. @end menu
  1612. @node Deprecated Functions, Deprecated Argument Conventions, Deprecated Language Features, Deprecated Language Features
  1613. @subsection Deprecated Functions
  1614. The @i{functions} in Figure 1--2 are deprecated.
  1615. @group
  1616. @noindent
  1617. @w{ assoc-if-not nsubst-if-not require }
  1618. @w{ count-if-not nsubstitute-if-not set }
  1619. @w{ delete-if-not position-if-not subst-if-not }
  1620. @w{ find-if-not provide substitute-if-not }
  1621. @w{ gentemp rassoc-if-not }
  1622. @w{ member-if-not remove-if-not }
  1623. @noindent
  1624. @w{ Figure 1--2: Deprecated Functions }
  1625. @end group
  1626. @node Deprecated Argument Conventions, Deprecated Variables, Deprecated Functions, Deprecated Language Features
  1627. @subsection Deprecated Argument Conventions
  1628. The ability to pass a numeric @i{argument} to @b{gensym} has been deprecated.
  1629. The @t{:test-not} @i{argument} to the @i{functions} in Figure 1--3 are deprecated.
  1630. @group
  1631. @noindent
  1632. @w{ adjoin nset-difference search }
  1633. @w{ assoc nset-exclusive-or set-difference }
  1634. @w{ count nsublis set-exclusive-or }
  1635. @w{ delete nsubst sublis }
  1636. @w{ delete-duplicates nsubstitute subsetp }
  1637. @w{ find nunion subst }
  1638. @w{ intersection position substitute }
  1639. @w{ member rassoc tree-equal }
  1640. @w{ mismatch remove union }
  1641. @w{ nintersection remove-duplicates }
  1642. @noindent
  1643. @w{ Figure 1--3: Functions with Deprecated :TEST-NOT Arguments}
  1644. @end group
  1645. The use of the situation names @b{compile}, @b{load}, and @b{eval}
  1646. in @b{eval-when} is deprecated.
  1647. @node Deprecated Variables, Deprecated Reader Syntax, Deprecated Argument Conventions, Deprecated Language Features
  1648. @subsection Deprecated Variables
  1649. The @i{variable} @b{*modules*} is deprecated.
  1650. @node Deprecated Reader Syntax, , Deprecated Variables, Deprecated Language Features
  1651. @subsection Deprecated Reader Syntax
  1652. The @t{#S} @i{reader macro} forces keyword names into the @t{KEYWORD} @i{package};
  1653. see @ref{Sharpsign S}.
  1654. This feature is deprecated;
  1655. in the future, keyword names will be taken in the package they are read in,
  1656. so @i{symbols} that are actually in the @t{KEYWORD} @i{package}
  1657. should be used if that is what is desired.
  1658. @c end of including concept-deprecated
  1659. @node Symbols in the COMMON-LISP Package, , Deprecated Language Features, Introduction (Introduction)
  1660. @section Symbols in the COMMON-LISP Package
  1661. @c including concept-cl-symbols
  1662. The figures on the next twelve pages contain a complete enumeration
  1663. of the 978 @i{external} @i{symbols} in the @t{COMMON-LISP} @i{package}.
  1664. @IPindex{common-lisp}
  1665. @group
  1666. @noindent
  1667. @w{ &allow-other-keys *print-miser-width* }
  1668. @w{ &aux *print-pprint-dispatch* }
  1669. @w{ &body *print-pretty* }
  1670. @w{ &environment *print-radix* }
  1671. @w{ &key *print-readably* }
  1672. @w{ &optional *print-right-margin* }
  1673. @w{ &rest *query-io* }
  1674. @w{ &whole *random-state* }
  1675. @w{ * *read-base* }
  1676. @w{ ** *read-default-float-format* }
  1677. @w{ *** *read-eval* }
  1678. @w{ *break-on-signals* *read-suppress* }
  1679. @w{ *compile-file-pathname* *readtable* }
  1680. @w{ *compile-file-truename* *standard-input* }
  1681. @w{ *compile-print* *standard-output* }
  1682. @w{ *compile-verbose* *terminal-io* }
  1683. @w{ *debug-io* *trace-output* }
  1684. @w{ *debugger-hook* + }
  1685. @w{ *default-pathname-defaults* ++ }
  1686. @w{ *error-output* +++ }
  1687. @w{ *features* - }
  1688. @w{ *gensym-counter* / }
  1689. @w{ *load-pathname* // }
  1690. @w{ *load-print* /// }
  1691. @w{ *load-truename* /= }
  1692. @w{ *load-verbose* 1+ }
  1693. @w{ *macroexpand-hook* 1- }
  1694. @w{ *modules* < }
  1695. @w{ *package* <= }
  1696. @w{ *print-array* = }
  1697. @w{ *print-base* > }
  1698. @w{ *print-case* >= }
  1699. @w{ *print-circle* abort }
  1700. @w{ *print-escape* abs }
  1701. @w{ *print-gensym* acons }
  1702. @w{ *print-length* acos }
  1703. @w{ *print-level* acosh }
  1704. @w{ *print-lines* add-method }
  1705. @noindent
  1706. @w{ Figure 1--4: Symbols in the COMMON-LISP package (part one of twelve).}
  1707. @end group
  1708. @page
  1709. @group
  1710. @noindent
  1711. @w{ adjoin atom boundp }
  1712. @w{ adjust-array base-char break }
  1713. @w{ adjustable-array-p base-string broadcast-stream }
  1714. @w{ allocate-instance bignum broadcast-stream-streams }
  1715. @w{ alpha-char-p bit built-in-class }
  1716. @w{ alphanumericp bit-and butlast }
  1717. @w{ and bit-andc1 byte }
  1718. @w{ append bit-andc2 byte-position }
  1719. @w{ apply bit-eqv byte-size }
  1720. @w{ apropos bit-ior caaaar }
  1721. @w{ apropos-list bit-nand caaadr }
  1722. @w{ aref bit-nor caaar }
  1723. @w{ arithmetic-error bit-not caadar }
  1724. @w{ arithmetic-error-operands bit-orc1 caaddr }
  1725. @w{ arithmetic-error-operation bit-orc2 caadr }
  1726. @w{ array bit-vector caar }
  1727. @w{ array-dimension bit-vector-p cadaar }
  1728. @w{ array-dimension-limit bit-xor cadadr }
  1729. @w{ array-dimensions block cadar }
  1730. @w{ array-displacement boole caddar }
  1731. @w{ array-element-type boole-1 cadddr }
  1732. @w{ array-has-fill-pointer-p boole-2 caddr }
  1733. @w{ array-in-bounds-p boole-and cadr }
  1734. @w{ array-rank boole-andc1 call-arguments-limit }
  1735. @w{ array-rank-limit boole-andc2 call-method }
  1736. @w{ array-row-major-index boole-c1 call-next-method }
  1737. @w{ array-total-size boole-c2 car }
  1738. @w{ array-total-size-limit boole-clr case }
  1739. @w{ arrayp boole-eqv catch }
  1740. @w{ ash boole-ior ccase }
  1741. @w{ asin boole-nand cdaaar }
  1742. @w{ asinh boole-nor cdaadr }
  1743. @w{ assert boole-orc1 cdaar }
  1744. @w{ assoc boole-orc2 cdadar }
  1745. @w{ assoc-if boole-set cdaddr }
  1746. @w{ assoc-if-not boole-xor cdadr }
  1747. @w{ atan boolean cdar }
  1748. @w{ atanh both-case-p cddaar }
  1749. @noindent
  1750. @w{ Figure 1--5: Symbols in the COMMON-LISP package (part two of twelve).}
  1751. @end group
  1752. @page
  1753. @group
  1754. @noindent
  1755. @w{ cddadr clear-input copy-tree }
  1756. @w{ cddar clear-output cos }
  1757. @w{ cdddar close cosh }
  1758. @w{ cddddr clrhash count }
  1759. @w{ cdddr code-char count-if }
  1760. @w{ cddr coerce count-if-not }
  1761. @w{ cdr compilation-speed ctypecase }
  1762. @w{ ceiling compile debug }
  1763. @w{ cell-error compile-file decf }
  1764. @w{ cell-error-name compile-file-pathname declaim }
  1765. @w{ cerror compiled-function declaration }
  1766. @w{ change-class compiled-function-p declare }
  1767. @w{ char compiler-macro decode-float }
  1768. @w{ char-code compiler-macro-function decode-universal-time }
  1769. @w{ char-code-limit complement defclass }
  1770. @w{ char-downcase complex defconstant }
  1771. @w{ char-equal complexp defgeneric }
  1772. @w{ char-greaterp compute-applicable-methods define-compiler-macro }
  1773. @w{ char-int compute-restarts define-condition }
  1774. @w{ char-lessp concatenate define-method-combination }
  1775. @w{ char-name concatenated-stream define-modify-macro }
  1776. @w{ char-not-equal concatenated-stream-streams define-setf-expander }
  1777. @w{ char-not-greaterp cond define-symbol-macro }
  1778. @w{ char-not-lessp condition defmacro }
  1779. @w{ char-upcase conjugate defmethod }
  1780. @w{ char/= cons defpackage }
  1781. @w{ char< consp defparameter }
  1782. @w{ char<= constantly defsetf }
  1783. @w{ char= constantp defstruct }
  1784. @w{ char> continue deftype }
  1785. @w{ char>= control-error defun }
  1786. @w{ character copy-alist defvar }
  1787. @w{ characterp copy-list delete }
  1788. @w{ check-type copy-pprint-dispatch delete-duplicates }
  1789. @w{ cis copy-readtable delete-file }
  1790. @w{ class copy-seq delete-if }
  1791. @w{ class-name copy-structure delete-if-not }
  1792. @w{ class-of copy-symbol delete-package }
  1793. @noindent
  1794. @w{ Figure 1--6: Symbols in the COMMON-LISP package (part three of twelve). }
  1795. @end group
  1796. @page
  1797. @group
  1798. @noindent
  1799. @w{ denominator eq }
  1800. @w{ deposit-field eql }
  1801. @w{ describe equal }
  1802. @w{ describe-object equalp }
  1803. @w{ destructuring-bind error }
  1804. @w{ digit-char etypecase }
  1805. @w{ digit-char-p eval }
  1806. @w{ directory eval-when }
  1807. @w{ directory-namestring evenp }
  1808. @w{ disassemble every }
  1809. @w{ division-by-zero exp }
  1810. @w{ do export }
  1811. @w{ do* expt }
  1812. @w{ do-all-symbols extended-char }
  1813. @w{ do-external-symbols fboundp }
  1814. @w{ do-symbols fceiling }
  1815. @w{ documentation fdefinition }
  1816. @w{ dolist ffloor }
  1817. @w{ dotimes fifth }
  1818. @w{ double-float file-author }
  1819. @w{ double-float-epsilon file-error }
  1820. @w{ double-float-negative-epsilon file-error-pathname }
  1821. @w{ dpb file-length }
  1822. @w{ dribble file-namestring }
  1823. @w{ dynamic-extent file-position }
  1824. @w{ ecase file-stream }
  1825. @w{ echo-stream file-string-length }
  1826. @w{ echo-stream-input-stream file-write-date }
  1827. @w{ echo-stream-output-stream fill }
  1828. @w{ ed fill-pointer }
  1829. @w{ eighth find }
  1830. @w{ elt find-all-symbols }
  1831. @w{ encode-universal-time find-class }
  1832. @w{ end-of-file find-if }
  1833. @w{ endp find-if-not }
  1834. @w{ enough-namestring find-method }
  1835. @w{ ensure-directories-exist find-package }
  1836. @w{ ensure-generic-function find-restart }
  1837. @noindent
  1838. @w{ Figure 1--7: Symbols in the COMMON-LISP package (part four of twelve).}
  1839. @end group
  1840. @page
  1841. @group
  1842. @noindent
  1843. @w{ find-symbol get-internal-run-time }
  1844. @w{ finish-output get-macro-character }
  1845. @w{ first get-output-stream-string }
  1846. @w{ fixnum get-properties }
  1847. @w{ flet get-setf-expansion }
  1848. @w{ float get-universal-time }
  1849. @w{ float-digits getf }
  1850. @w{ float-precision gethash }
  1851. @w{ float-radix go }
  1852. @w{ float-sign graphic-char-p }
  1853. @w{ floating-point-inexact handler-bind }
  1854. @w{ floating-point-invalid-operation handler-case }
  1855. @w{ floating-point-overflow hash-table }
  1856. @w{ floating-point-underflow hash-table-count }
  1857. @w{ floatp hash-table-p }
  1858. @w{ floor hash-table-rehash-size }
  1859. @w{ fmakunbound hash-table-rehash-threshold }
  1860. @w{ force-output hash-table-size }
  1861. @w{ format hash-table-test }
  1862. @w{ formatter host-namestring }
  1863. @w{ fourth identity }
  1864. @w{ fresh-line if }
  1865. @w{ fround ignorable }
  1866. @w{ ftruncate ignore }
  1867. @w{ ftype ignore-errors }
  1868. @w{ funcall imagpart }
  1869. @w{ function import }
  1870. @w{ function-keywords in-package }
  1871. @w{ function-lambda-expression incf }
  1872. @w{ functionp initialize-instance }
  1873. @w{ gcd inline }
  1874. @w{ generic-function input-stream-p }
  1875. @w{ gensym inspect }
  1876. @w{ gentemp integer }
  1877. @w{ get integer-decode-float }
  1878. @w{ get-decoded-time integer-length }
  1879. @w{ get-dispatch-macro-character integerp }
  1880. @w{ get-internal-real-time interactive-stream-p }
  1881. @noindent
  1882. @w{ Figure 1--8: Symbols in the COMMON-LISP package (part five of twelve).}
  1883. @end group
  1884. @page
  1885. @group
  1886. @noindent
  1887. @w{ intern lisp-implementation-type }
  1888. @w{ internal-time-units-per-second lisp-implementation-version }
  1889. @w{ intersection list }
  1890. @w{ invalid-method-error list* }
  1891. @w{ invoke-debugger list-all-packages }
  1892. @w{ invoke-restart list-length }
  1893. @w{ invoke-restart-interactively listen }
  1894. @w{ isqrt listp }
  1895. @w{ keyword load }
  1896. @w{ keywordp load-logical-pathname-translations }
  1897. @w{ labels load-time-value }
  1898. @w{ lambda locally }
  1899. @w{ lambda-list-keywords log }
  1900. @w{ lambda-parameters-limit logand }
  1901. @w{ last logandc1 }
  1902. @w{ lcm logandc2 }
  1903. @w{ ldb logbitp }
  1904. @w{ ldb-test logcount }
  1905. @w{ ldiff logeqv }
  1906. @w{ least-negative-double-float logical-pathname }
  1907. @w{ least-negative-long-float logical-pathname-translations }
  1908. @w{ least-negative-normalized-double-float logior }
  1909. @w{ least-negative-normalized-long-float lognand }
  1910. @w{ least-negative-normalized-short-float lognor }
  1911. @w{ least-negative-normalized-single-float lognot }
  1912. @w{ least-negative-short-float logorc1 }
  1913. @w{ least-negative-single-float logorc2 }
  1914. @w{ least-positive-double-float logtest }
  1915. @w{ least-positive-long-float logxor }
  1916. @w{ least-positive-normalized-double-float long-float }
  1917. @w{ least-positive-normalized-long-float long-float-epsilon }
  1918. @w{ least-positive-normalized-short-float long-float-negative-epsilon }
  1919. @w{ least-positive-normalized-single-float long-site-name }
  1920. @w{ least-positive-short-float loop }
  1921. @w{ least-positive-single-float loop-finish }
  1922. @w{ length lower-case-p }
  1923. @w{ let machine-instance }
  1924. @w{ let* machine-type }
  1925. @noindent
  1926. @w{ Figure 1--9: Symbols in the COMMON-LISP package (part six of twelve). }
  1927. @end group
  1928. @page
  1929. @group
  1930. @noindent
  1931. @w{ machine-version mask-field }
  1932. @w{ macro-function max }
  1933. @w{ macroexpand member }
  1934. @w{ macroexpand-1 member-if }
  1935. @w{ macrolet member-if-not }
  1936. @w{ make-array merge }
  1937. @w{ make-broadcast-stream merge-pathnames }
  1938. @w{ make-concatenated-stream method }
  1939. @w{ make-condition method-combination }
  1940. @w{ make-dispatch-macro-character method-combination-error }
  1941. @w{ make-echo-stream method-qualifiers }
  1942. @w{ make-hash-table min }
  1943. @w{ make-instance minusp }
  1944. @w{ make-instances-obsolete mismatch }
  1945. @w{ make-list mod }
  1946. @w{ make-load-form most-negative-double-float }
  1947. @w{ make-load-form-saving-slots most-negative-fixnum }
  1948. @w{ make-method most-negative-long-float }
  1949. @w{ make-package most-negative-short-float }
  1950. @w{ make-pathname most-negative-single-float }
  1951. @w{ make-random-state most-positive-double-float }
  1952. @w{ make-sequence most-positive-fixnum }
  1953. @w{ make-string most-positive-long-float }
  1954. @w{ make-string-input-stream most-positive-short-float }
  1955. @w{ make-string-output-stream most-positive-single-float }
  1956. @w{ make-symbol muffle-warning }
  1957. @w{ make-synonym-stream multiple-value-bind }
  1958. @w{ make-two-way-stream multiple-value-call }
  1959. @w{ makunbound multiple-value-list }
  1960. @w{ map multiple-value-prog1 }
  1961. @w{ map-into multiple-value-setq }
  1962. @w{ mapc multiple-values-limit }
  1963. @w{ mapcan name-char }
  1964. @w{ mapcar namestring }
  1965. @w{ mapcon nbutlast }
  1966. @w{ maphash nconc }
  1967. @w{ mapl next-method-p }
  1968. @w{ maplist nil }
  1969. @noindent
  1970. @w{ Figure 1--10: Symbols in the COMMON-LISP package (part seven of twelve).}
  1971. @end group
  1972. @page
  1973. @group
  1974. @noindent
  1975. @w{ nintersection package-error }
  1976. @w{ ninth package-error-package }
  1977. @w{ no-applicable-method package-name }
  1978. @w{ no-next-method package-nicknames }
  1979. @w{ not package-shadowing-symbols }
  1980. @w{ notany package-use-list }
  1981. @w{ notevery package-used-by-list }
  1982. @w{ notinline packagep }
  1983. @w{ nreconc pairlis }
  1984. @w{ nreverse parse-error }
  1985. @w{ nset-difference parse-integer }
  1986. @w{ nset-exclusive-or parse-namestring }
  1987. @w{ nstring-capitalize pathname }
  1988. @w{ nstring-downcase pathname-device }
  1989. @w{ nstring-upcase pathname-directory }
  1990. @w{ nsublis pathname-host }
  1991. @w{ nsubst pathname-match-p }
  1992. @w{ nsubst-if pathname-name }
  1993. @w{ nsubst-if-not pathname-type }
  1994. @w{ nsubstitute pathname-version }
  1995. @w{ nsubstitute-if pathnamep }
  1996. @w{ nsubstitute-if-not peek-char }
  1997. @w{ nth phase }
  1998. @w{ nth-value pi }
  1999. @w{ nthcdr plusp }
  2000. @w{ null pop }
  2001. @w{ number position }
  2002. @w{ numberp position-if }
  2003. @w{ numerator position-if-not }
  2004. @w{ nunion pprint }
  2005. @w{ oddp pprint-dispatch }
  2006. @w{ open pprint-exit-if-list-exhausted }
  2007. @w{ open-stream-p pprint-fill }
  2008. @w{ optimize pprint-indent }
  2009. @w{ or pprint-linear }
  2010. @w{ otherwise pprint-logical-block }
  2011. @w{ output-stream-p pprint-newline }
  2012. @w{ package pprint-pop }
  2013. @noindent
  2014. @w{ Figure 1--11: Symbols in the COMMON-LISP package (part eight of twelve).}
  2015. @end group
  2016. @page
  2017. @group
  2018. @noindent
  2019. @w{ pprint-tab read-char }
  2020. @w{ pprint-tabular read-char-no-hang }
  2021. @w{ prin1 read-delimited-list }
  2022. @w{ prin1-to-string read-from-string }
  2023. @w{ princ read-line }
  2024. @w{ princ-to-string read-preserving-whitespace }
  2025. @w{ print read-sequence }
  2026. @w{ print-not-readable reader-error }
  2027. @w{ print-not-readable-object readtable }
  2028. @w{ print-object readtable-case }
  2029. @w{ print-unreadable-object readtablep }
  2030. @w{ probe-file real }
  2031. @w{ proclaim realp }
  2032. @w{ prog realpart }
  2033. @w{ prog* reduce }
  2034. @w{ prog1 reinitialize-instance }
  2035. @w{ prog2 rem }
  2036. @w{ progn remf }
  2037. @w{ program-error remhash }
  2038. @w{ progv remove }
  2039. @w{ provide remove-duplicates }
  2040. @w{ psetf remove-if }
  2041. @w{ psetq remove-if-not }
  2042. @w{ push remove-method }
  2043. @w{ pushnew remprop }
  2044. @w{ quote rename-file }
  2045. @w{ random rename-package }
  2046. @w{ random-state replace }
  2047. @w{ random-state-p require }
  2048. @w{ rassoc rest }
  2049. @w{ rassoc-if restart }
  2050. @w{ rassoc-if-not restart-bind }
  2051. @w{ ratio restart-case }
  2052. @w{ rational restart-name }
  2053. @w{ rationalize return }
  2054. @w{ rationalp return-from }
  2055. @w{ read revappend }
  2056. @w{ read-byte reverse }
  2057. @noindent
  2058. @w{ Figure 1--12: Symbols in the COMMON-LISP package (part nine of twelve).}
  2059. @end group
  2060. @page
  2061. @group
  2062. @noindent
  2063. @w{ room simple-bit-vector }
  2064. @w{ rotatef simple-bit-vector-p }
  2065. @w{ round simple-condition }
  2066. @w{ row-major-aref simple-condition-format-arguments }
  2067. @w{ rplaca simple-condition-format-control }
  2068. @w{ rplacd simple-error }
  2069. @w{ safety simple-string }
  2070. @w{ satisfies simple-string-p }
  2071. @w{ sbit simple-type-error }
  2072. @w{ scale-float simple-vector }
  2073. @w{ schar simple-vector-p }
  2074. @w{ search simple-warning }
  2075. @w{ second sin }
  2076. @w{ sequence single-float }
  2077. @w{ serious-condition single-float-epsilon }
  2078. @w{ set single-float-negative-epsilon }
  2079. @w{ set-difference sinh }
  2080. @w{ set-dispatch-macro-character sixth }
  2081. @w{ set-exclusive-or sleep }
  2082. @w{ set-macro-character slot-boundp }
  2083. @w{ set-pprint-dispatch slot-exists-p }
  2084. @w{ set-syntax-from-char slot-makunbound }
  2085. @w{ setf slot-missing }
  2086. @w{ setq slot-unbound }
  2087. @w{ seventh slot-value }
  2088. @w{ shadow software-type }
  2089. @w{ shadowing-import software-version }
  2090. @w{ shared-initialize some }
  2091. @w{ shiftf sort }
  2092. @w{ short-float space }
  2093. @w{ short-float-epsilon special }
  2094. @w{ short-float-negative-epsilon special-operator-p }
  2095. @w{ short-site-name speed }
  2096. @w{ signal sqrt }
  2097. @w{ signed-byte stable-sort }
  2098. @w{ signum standard }
  2099. @w{ simple-array standard-char }
  2100. @w{ simple-base-string standard-char-p }
  2101. @noindent
  2102. @w{ Figure 1--13: Symbols in the COMMON-LISP package (part ten of twelve).}
  2103. @end group
  2104. @page
  2105. @group
  2106. @noindent
  2107. @w{ standard-class sublis }
  2108. @w{ standard-generic-function subseq }
  2109. @w{ standard-method subsetp }
  2110. @w{ standard-object subst }
  2111. @w{ step subst-if }
  2112. @w{ storage-condition subst-if-not }
  2113. @w{ store-value substitute }
  2114. @w{ stream substitute-if }
  2115. @w{ stream-element-type substitute-if-not }
  2116. @w{ stream-error subtypep }
  2117. @w{ stream-error-stream svref }
  2118. @w{ stream-external-format sxhash }
  2119. @w{ streamp symbol }
  2120. @w{ string symbol-function }
  2121. @w{ string-capitalize symbol-macrolet }
  2122. @w{ string-downcase symbol-name }
  2123. @w{ string-equal symbol-package }
  2124. @w{ string-greaterp symbol-plist }
  2125. @w{ string-left-trim symbol-value }
  2126. @w{ string-lessp symbolp }
  2127. @w{ string-not-equal synonym-stream }
  2128. @w{ string-not-greaterp synonym-stream-symbol }
  2129. @w{ string-not-lessp t }
  2130. @w{ string-right-trim tagbody }
  2131. @w{ string-stream tailp }
  2132. @w{ string-trim tan }
  2133. @w{ string-upcase tanh }
  2134. @w{ string/= tenth }
  2135. @w{ string< terpri }
  2136. @w{ string<= the }
  2137. @w{ string= third }
  2138. @w{ string> throw }
  2139. @w{ string>= time }
  2140. @w{ stringp trace }
  2141. @w{ structure translate-logical-pathname }
  2142. @w{ structure-class translate-pathname }
  2143. @w{ structure-object tree-equal }
  2144. @w{ style-warning truename }
  2145. @noindent
  2146. @w{ Figure 1--14: Symbols in the COMMON-LISP package (part eleven of twelve).}
  2147. @end group
  2148. @page
  2149. @group
  2150. @noindent
  2151. @w{ truncate values-list }
  2152. @w{ two-way-stream variable }
  2153. @w{ two-way-stream-input-stream vector }
  2154. @w{ two-way-stream-output-stream vector-pop }
  2155. @w{ type vector-push }
  2156. @w{ type-error vector-push-extend }
  2157. @w{ type-error-datum vectorp }
  2158. @w{ type-error-expected-type warn }
  2159. @w{ type-of warning }
  2160. @w{ typecase when }
  2161. @w{ typep wild-pathname-p }
  2162. @w{ unbound-slot with-accessors }
  2163. @w{ unbound-slot-instance with-compilation-unit }
  2164. @w{ unbound-variable with-condition-restarts }
  2165. @w{ undefined-function with-hash-table-iterator }
  2166. @w{ unexport with-input-from-string }
  2167. @w{ unintern with-open-file }
  2168. @w{ union with-open-stream }
  2169. @w{ unless with-output-to-string }
  2170. @w{ unread-char with-package-iterator }
  2171. @w{ unsigned-byte with-simple-restart }
  2172. @w{ untrace with-slots }
  2173. @w{ unuse-package with-standard-io-syntax }
  2174. @w{ unwind-protect write }
  2175. @w{ update-instance-for-different-class write-byte }
  2176. @w{ update-instance-for-redefined-class write-char }
  2177. @w{ upgraded-array-element-type write-line }
  2178. @w{ upgraded-complex-part-type write-sequence }
  2179. @w{ upper-case-p write-string }
  2180. @w{ use-package write-to-string }
  2181. @w{ use-value y-or-n-p }
  2182. @w{ user-homedir-pathname yes-or-no-p }
  2183. @w{ values zerop }
  2184. @noindent
  2185. @w{ Figure 1--15: Symbols in the COMMON-LISP package (part twelve of twelve).}
  2186. @end group
  2187. @c end of including concept-cl-symbols
  2188. @c %**end of chapter