4333 lines
No EOL
106 KiB
HTML
4333 lines
No EOL
106 KiB
HTML
<!DOCTYPE HTML>
|
|
<HTML LANG="en-us"
|
|
><HEAD
|
|
><TITLE
|
|
>1.4 Definitions | Common Lisp Nova Spec</TITLE
|
|
><META CHARSET="US-ASCII"
|
|
><LINK REL="canonical" HREF="1_4_Definitions.html"
|
|
><LINK REL="next" HREF="1_5_Conformance.html" TYPE="text/html" TITLE="1.5 Conformance"
|
|
><LINK REL="prev" HREF="1_3_Referenced_Publications.html" TYPE="text/html" TITLE="1.3 Referenced Publications"
|
|
><LINK REL="up" HREF="1_Introduction.html" TYPE="text/html" TITLE="1. Introduction"
|
|
><LINK REL="start" HREF="index.html" TYPE="text/html" TITLE="Common Lisp Nova Spec"
|
|
><META NAME="VIEWPORT" CONTENT="width=device-width, initial-scale=1.0"
|
|
><LINK REL="STYLESHEET" HREF="dpans.css%3F3909942064.css"
|
|
><SCRIPT SRC="dpans.js%3F3909942064"
|
|
></SCRIPT
|
|
><SCRIPT SRC="apropos.js%3F3909942064"
|
|
></SCRIPT
|
|
></HEAD
|
|
><BODY
|
|
><DIV
|
|
><DIV CLASS="topnav"
|
|
><DIV CLASS="breadcrumb"
|
|
><SPAN CLASS="breadcrumb-item"
|
|
><A HREF="index.html"
|
|
>Common Lisp Nova Spec</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="1_Introduction.html"
|
|
>1. Introduction</A
|
|
></SPAN
|
|
> <SPAN CLASS="breadcrumb-item"
|
|
>→ <A HREF="1_4_Definitions.html"
|
|
>1.4 Definitions</A
|
|
></SPAN
|
|
></DIV
|
|
><DIV CLASS="apropos"
|
|
><DIV CLASS="apropos-io"
|
|
><A HREF="1_3_Referenced_Publications.html" CLASS="prev"
|
|
>←</A
|
|
><SPAN ID="apropos-label"
|
|
>Apropos </SPAN
|
|
><INPUT ID="apropos" AUTOFOCUS="AUTOFOCUS" PLACEHOLDER="Type here to search" ONINPUT="aproposInput(this);" ONKEYUP="aproposKeyup(event);" ONCHANGE="aproposChange(this);" ONFOCUS="aproposFocus(this);" ONFOCUSOUT="aproposFocusout(this);"
|
|
><A HREF="1_5_Conformance.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV ID="apropos-res"
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV CLASS="matter"
|
|
><SECTION
|
|
><H2 ID="sec_1_4" CLASS="HeadII"
|
|
>1.4 Definitions</H2
|
|
><UL CLASS="subtoc"
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1"
|
|
>1.4.1 Notational Conventions</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_1"
|
|
>1.4.1.1 Font Key</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_2"
|
|
>1.4.1.2 Modified BNF Syntax</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_2_1"
|
|
>1.4.1.2.1 Splicing in Modified BNF Syntax</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_2_2"
|
|
>1.4.1.2.2 Indirection in Modified BNF Syntax</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_2_3"
|
|
>1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_3"
|
|
>1.4.1.3 Special Symbols</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_4"
|
|
>1.4.1.4 Objects with Multiple Notations</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_4_1"
|
|
>1.4.1.4.1 Case in Symbols</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_4_2"
|
|
>1.4.1.4.2 Numbers</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_4_3"
|
|
>1.4.1.4.3 Use of the Dot Character</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_4_4"
|
|
>1.4.1.4.4 NIL</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_5"
|
|
>1.4.1.5 Designators</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_1_6"
|
|
>1.4.1.6 Nonsense Words</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_2"
|
|
>1.4.2 Error Terminology</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_3"
|
|
>1.4.3 Sections Not Formally Part Of This Standard</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4"
|
|
>1.4.4 Interpreting Dictionary Entries</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_1"
|
|
>1.4.4.1 The “Affected By” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_2"
|
|
>1.4.4.2 The “Arguments” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_3"
|
|
>1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_4"
|
|
>1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_5"
|
|
>1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_6"
|
|
>1.4.4.6 Dictionary Entries for Type Specifiers</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_6_1"
|
|
>1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_6_2"
|
|
>1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_6_3"
|
|
>1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_6_4"
|
|
>1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_7"
|
|
>1.4.4.7 The “Constant Value” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_8"
|
|
>1.4.4.8 The “Description” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_9"
|
|
>1.4.4.9 The “Examples” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_10"
|
|
>1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_11"
|
|
>1.4.4.11 The “Initial Value” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_12"
|
|
>1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_13"
|
|
>1.4.4.13 The “Method Signature” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_14"
|
|
>1.4.4.14 The “Name” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_15"
|
|
>1.4.4.15 The “Notes” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_16"
|
|
>1.4.4.16 The “Pronunciation” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_17"
|
|
>1.4.4.17 The “See Also” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_18"
|
|
>1.4.4.18 The “Side Effects” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_19"
|
|
>1.4.4.19 The “Supertypes” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20"
|
|
>1.4.4.20 The “Syntax” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_1"
|
|
>1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_2"
|
|
>1.4.4.20.2 Naming Conventions for Rest Parameters</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_3"
|
|
>1.4.4.20.3 Requiring Non-Null Rest Parameters in the “Syntax” Section</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_4"
|
|
>1.4.4.20.4 Return values in the “Syntax” Section</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_4_1"
|
|
>1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_20_4_2"
|
|
>1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_21"
|
|
>1.4.4.21 The “Valid Context” Section of a Dictionary Entry</A
|
|
></LI
|
|
><LI
|
|
><A HREF="1_4_Definitions.html#sec_1_4_4_22"
|
|
>1.4.4.22 The “Value Type” Section of a Dictionary Entry</A
|
|
></LI
|
|
></UL
|
|
><P CLASS="j"
|
|
>This section contains notational conventions and definitions of terms used in this manual.</P
|
|
><H3 ID="sec_1_4_1" CLASS="HeadIII"
|
|
>1.4.1 Notational Conventions</H3
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="notation"
|
|
></SPAN
|
|
>The following notational conventions are used throughout this document.</P
|
|
><H4 ID="sec_1_4_1_1" CLASS="HeadIV"
|
|
>1.4.1.1 Font Key</H4
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="font key"
|
|
></SPAN
|
|
>Fonts are used in this document to convey information.</P
|
|
><DL
|
|
><DT
|
|
><A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Denotes a formal term whose meaning is defined in the Glossary. When this font is used, the Glossary definition takes precedence over normal English usage. </P
|
|
><P CLASS="j"
|
|
>Sometimes a glossary term appears subscripted, as in “<A HREF="26_1_Glossary.html#whitespace"
|
|
><EM CLASS="term"
|
|
>whitespace</EM
|
|
></A
|
|
><SPAN CLASS="meaning"
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>2</SPAN
|
|
></SUB
|
|
></SPAN
|
|
>.” Such a notation selects one particular Glossary definition out of several, in this case the second. The subscript notation for Glossary terms is generally used where the context might be insufficient to disambiguate among the available definitions.</P
|
|
></DD
|
|
><DT
|
|
><DFN CLASS="newterm"
|
|
><SPAN CLASS="cmbxsl"
|
|
>name</SPAN
|
|
></DFN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="name"
|
|
></SPAN
|
|
>Denotes the introduction of a formal term locally to the current text. There is still a corresponding glossary entry, and is formally equivalent to a use of “<A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
>,” but the hope is that making such uses conspicuous will save the reader a trip to the glossary in some cases.</P
|
|
></DD
|
|
><DT
|
|
><SPAN CLASS="misc"
|
|
><B
|
|
>name</B
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Denotes a symbol in the <SPAN CLASS="packref"
|
|
><SPAN CLASS="cmtt"
|
|
>COMMON-LISP</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#package"
|
|
><EM CLASS="term"
|
|
>package</EM
|
|
></A
|
|
>. For information about <A HREF="26_1_Glossary.html#case"
|
|
><EM CLASS="term"
|
|
>case</EM
|
|
></A
|
|
> conventions, see <A HREF="1_4_Definitions.html#sec_1_4_1_4_1" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>1.4.1.4.1</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Case</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>in</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Symbols)</SPAN
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><CODE CLASS="f"
|
|
>name</CODE
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Denotes a sample <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
> or piece of <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
> that a programmer might write in Common Lisp. </P
|
|
><P CLASS="j"
|
|
>This font is also used for certain <A HREF="26_1_Glossary.html#standardized"
|
|
><EM CLASS="term"
|
|
>standardized</EM
|
|
></A
|
|
> names that are not names of <A HREF="26_1_Glossary.html#external_symbol"
|
|
><EM CLASS="term"
|
|
>external symbols</EM
|
|
></A
|
|
> of the <SPAN CLASS="packref"
|
|
><SPAN CLASS="cmtt"
|
|
>COMMON-LISP</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#package"
|
|
><EM CLASS="term"
|
|
>package</EM
|
|
></A
|
|
>, such as <A HREF="26_1_Glossary.html#keyword"
|
|
><EM CLASS="term"
|
|
>keywords</EM
|
|
></A
|
|
><SPAN CLASS="meaning"
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUB
|
|
></SPAN
|
|
>, <A HREF="26_1_Glossary.html#package"
|
|
><EM CLASS="term"
|
|
>package</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>names</EM
|
|
></A
|
|
>, and <A HREF="26_1_Glossary.html#loop_keyword"
|
|
><EM CLASS="term"
|
|
>loop keywords</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><VAR CLASS="param"
|
|
>name</VAR
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Denotes the name of a <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> or <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>In some situations the notation “⟪<VAR CLASS="param"
|
|
>name</VAR
|
|
>⟫” (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, the same font, but with surrounding “angle brackets”) is used instead in order to provide better visual separation from surrounding characters. These “angle brackets” are metasyntactic, and never actually appear in program input or output.</P
|
|
></DD
|
|
></DL
|
|
><H4 ID="sec_1_4_1_2" CLASS="HeadIV"
|
|
>1.4.1.2 Modified BNF Syntax</H4
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="bnf key"
|
|
></SPAN
|
|
>This specification uses an extended Backus Normal Form (BNF) to describe the syntax of Common Lisp <A HREF="26_1_Glossary.html#macro_form"
|
|
><EM CLASS="term"
|
|
>macro forms</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#special_form"
|
|
><EM CLASS="term"
|
|
>special forms</EM
|
|
></A
|
|
>. This section discusses the syntax of BNF expressions.</P
|
|
><H5 ID="sec_1_4_1_2_1" CLASS="HeadV"
|
|
>1.4.1.2.1 Splicing in Modified BNF Syntax</H5
|
|
><P CLASS="j"
|
|
>The primary extension used is the following:</P
|
|
><DIV CLASS="displaymath"
|
|
><SPAN CLASS="cmr"
|
|
>⟦ </SPAN
|
|
><I
|
|
>O</I
|
|
> <SPAN CLASS="cmr"
|
|
> ⟧</SPAN
|
|
></DIV
|
|
><P CLASS="j"
|
|
>An expression of this form appears whenever a list of elements is to be spliced into a larger structure and the elements can appear in any order. The symbol <I
|
|
>O</I
|
|
> represents a description of the syntax of some number of syntactic elements to be spliced; that description must be of the form</P
|
|
><DIV CLASS="displaymath"
|
|
><I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUB
|
|
> <SPAN CLASS="cmsy"
|
|
>|</SPAN
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
> <SPAN CLASS="cmsy"
|
|
>|</SPAN
|
|
> <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>l</I
|
|
></SUB
|
|
></DIV
|
|
><P CLASS="j"
|
|
>where each <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
></SUB
|
|
> can be of the form <I
|
|
>S</I
|
|
> or of the form <I
|
|
>S</I
|
|
>* or of the form <I
|
|
>S</I
|
|
><SUP CLASS="sup"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUP
|
|
>. The expression ⟦ <I
|
|
>O</I
|
|
>  ⟧ means that a list of the form</P
|
|
><DIV CLASS="displaymath"
|
|
><SPAN CLASS="cmr"
|
|
>(</SPAN
|
|
><I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUB
|
|
></SUB
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>j</I
|
|
></SUB
|
|
></SUB
|
|
><SPAN CLASS="cmr"
|
|
>)</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
> <SPAN CLASS="cmsy"
|
|
>≤</SPAN
|
|
> <I
|
|
>j</I
|
|
></DIV
|
|
><P CLASS="j"
|
|
>is spliced into the enclosing expression, such that if <I
|
|
>n</I
|
|
> ≠ <I
|
|
>m</I
|
|
> and 1 ≤ <I
|
|
>n,</I
|
|
> <I
|
|
>m</I
|
|
> ≤ <I
|
|
>j</I
|
|
>, then either <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>n</I
|
|
></SUB
|
|
></SUB
|
|
> ≠ <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>m</I
|
|
></SUB
|
|
></SUB
|
|
> or <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>n</I
|
|
></SUB
|
|
></SUB
|
|
> = <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>m</I
|
|
></SUB
|
|
></SUB
|
|
> = <I
|
|
>Q</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>k</I
|
|
></SUB
|
|
>, where for some 1≤<I
|
|
>k</I
|
|
>≤<I
|
|
>n</I
|
|
>, <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>k</I
|
|
></SUB
|
|
> is of the form <I
|
|
>Q</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>k</I
|
|
></SUB
|
|
>*. Furthermore, for each <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>i</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>n</I
|
|
></SUB
|
|
></SUB
|
|
> that is of the form <I
|
|
>Q</I
|
|
><SUB CLASS="sub"
|
|
><I
|
|
>k</I
|
|
></SUB
|
|
><SUP CLASS="sup"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUP
|
|
>, that element is required to appear somewhere in the list to be spliced. </P
|
|
><P CLASS="j"
|
|
>For example, the expression </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(x <SPAN CLASS="cmr"
|
|
>⟦ </SPAN
|
|
>A | B<SPAN CLASS="cmr"
|
|
>*</SPAN
|
|
> | C <SPAN CLASS="cmr"
|
|
> ⟧</SPAN
|
|
> y)</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>means that at most one <SPAN CLASS="cmtt"
|
|
>A</SPAN
|
|
>, any number of <SPAN CLASS="cmtt"
|
|
>B</SPAN
|
|
>’s, and at most one <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> can occur in any order. It is a description of any of these:</P
|
|
><PRE CLASS="screen"
|
|
>(x y)
|
|
(x B A C y)
|
|
(x A B B B B B C y)
|
|
(x C B A B B B y)</PRE
|
|
><P CLASS="j"
|
|
>but not any of these:</P
|
|
><PRE CLASS="screen"
|
|
>(x B B A A C C y)
|
|
(x C B C y)</PRE
|
|
><P CLASS="j"
|
|
>In the first case, both <SPAN CLASS="cmtt"
|
|
>A</SPAN
|
|
> and <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> appear too often, and in the second case <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> appears too often. </P
|
|
><P CLASS="j"
|
|
>The notation ⟦ <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>1</SPAN
|
|
></SUB
|
|
> | <I
|
|
>O</I
|
|
><SUB CLASS="sub"
|
|
><SPAN CLASS="cmr"
|
|
>2</SPAN
|
|
></SUB
|
|
> | <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
> <I
|
|
>.</I
|
|
>  ⟧<SUP CLASS="sup"
|
|
><SPAN CLASS="cmr"
|
|
>+</SPAN
|
|
></SUP
|
|
> adds the additional restriction that at least one item from among the possible choices must be used. For example: </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(x <SPAN CLASS="cmr"
|
|
>⟦ </SPAN
|
|
>A | B<SPAN CLASS="cmr"
|
|
>*</SPAN
|
|
> | C <SPAN CLASS="cmr"
|
|
> ⟧</SPAN
|
|
><SUP CLASS="sup"
|
|
><SPAN CLASS="cmtt"
|
|
>+</SPAN
|
|
></SUP
|
|
> y)</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>means that at most one <SPAN CLASS="cmtt"
|
|
>A</SPAN
|
|
>, any number of <SPAN CLASS="cmtt"
|
|
>B</SPAN
|
|
>’s, and at most one <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> can occur in any order, but that in any case at least one of these options must be selected. It is a description of any of these:</P
|
|
><PRE CLASS="screen"
|
|
>(x B y)
|
|
(x B A C y)
|
|
(x A B B B B B C y)
|
|
(x C B A B B B y)</PRE
|
|
><P CLASS="j"
|
|
>but not any of these:</P
|
|
><PRE CLASS="screen"
|
|
>(x y)
|
|
(x B B A A C C y)
|
|
(x C B C y)</PRE
|
|
><P CLASS="j"
|
|
>In the first case, no item was used; in the second case, both <SPAN CLASS="cmtt"
|
|
>A</SPAN
|
|
> and <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> appear too often; and in the third case <SPAN CLASS="cmtt"
|
|
>C</SPAN
|
|
> appears too often. </P
|
|
><P CLASS="j"
|
|
>Also, the expression: </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(x <SPAN CLASS="cmr"
|
|
>⟦ </SPAN
|
|
>A<SUP CLASS="sup"
|
|
><SPAN CLASS="cmtt"
|
|
>1</SPAN
|
|
></SUP
|
|
> | B<SUP CLASS="sup"
|
|
><SPAN CLASS="cmtt"
|
|
>1</SPAN
|
|
></SUP
|
|
> | C <SPAN CLASS="cmr"
|
|
> ⟧</SPAN
|
|
> y)</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>can generate exactly these and no others:</P
|
|
><PRE CLASS="screen"
|
|
>(x A B C y)
|
|
(x A C B y)
|
|
(x A B y)
|
|
(x B A C y)
|
|
(x B C A y)
|
|
(x B A y)
|
|
(x C A B y)
|
|
(x C B A y)</PRE
|
|
><H5 ID="sec_1_4_1_2_2" CLASS="HeadV"
|
|
>1.4.1.2.2 Indirection in Modified BNF Syntax</H5
|
|
><P CLASS="j"
|
|
>An indirection extension is introduced in order to make this new syntax more readable:</P
|
|
><DIV CLASS="displaymath"
|
|
><SPAN CLASS="cmsy"
|
|
>↓</SPAN
|
|
><VAR CLASS="param"
|
|
>O</VAR
|
|
></DIV
|
|
><P CLASS="j"
|
|
>If <VAR CLASS="param"
|
|
>O</VAR
|
|
> is a non-terminal symbol, the right-hand side of its definition is substituted for the entire expression ↓<VAR CLASS="param"
|
|
>O</VAR
|
|
>. For example, the following BNF is equivalent to the BNF in the previous example: </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(x <SPAN CLASS="cmr"
|
|
>⟦ </SPAN
|
|
><SPAN CLASS="cmsy"
|
|
>↓</SPAN
|
|
><VAR CLASS="param"
|
|
>O</VAR
|
|
> <SPAN CLASS="cmr"
|
|
> ⟧</SPAN
|
|
> y)</CODE
|
|
></P
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0"
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
><VAR CLASS="param"
|
|
>O</VAR
|
|
><SPAN CLASS="cmssi"
|
|
>::</SPAN
|
|
>=</TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <CODE CLASS="f"
|
|
>A</CODE
|
|
> | <CODE CLASS="f"
|
|
>B</CODE
|
|
>* | <CODE CLASS="f"
|
|
>C</CODE
|
|
></TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
><H5 ID="sec_1_4_1_2_3" CLASS="HeadV"
|
|
>1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax</H5
|
|
><P CLASS="j"
|
|
>In some cases, an auxiliary definition in the BNF might appear to be unused within the BNF, but might still be useful elsewhere. For example, consider the following definitions:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>case</B
|
|
> <SPAN CLASS="cmssi"
|
|
>keyform</SPAN
|
|
> {↓<VAR CLASS="param"
|
|
>normal-clause</VAR
|
|
>}* [↓<VAR CLASS="param"
|
|
>otherwise-clause</VAR
|
|
>] <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> {<VAR CLASS="param"
|
|
>result</VAR
|
|
>}*</P
|
|
><P CLASS="j"
|
|
><B
|
|
>ccase</B
|
|
> <SPAN CLASS="cmssi"
|
|
>keyplace</SPAN
|
|
> {↓<VAR CLASS="param"
|
|
>normal-clause</VAR
|
|
>}* <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> {<VAR CLASS="param"
|
|
>result</VAR
|
|
>}*</P
|
|
><P CLASS="j"
|
|
><B
|
|
>ecase</B
|
|
> <SPAN CLASS="cmssi"
|
|
>keyform</SPAN
|
|
> {↓<VAR CLASS="param"
|
|
>normal-clause</VAR
|
|
>}* <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> {<VAR CLASS="param"
|
|
>result</VAR
|
|
>}*</P
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0"
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
><VAR CLASS="param"
|
|
>normal-clause</VAR
|
|
><SPAN CLASS="cmssi"
|
|
>::</SPAN
|
|
>=</TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> (<SPAN CLASS="cmssi"
|
|
>keys</SPAN
|
|
> {<VAR CLASS="param"
|
|
>form</VAR
|
|
>}*)</TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0"
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
><VAR CLASS="param"
|
|
>otherwise-clause</VAR
|
|
><SPAN CLASS="cmssi"
|
|
>::</SPAN
|
|
>=</TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> ({<SPAN CLASS="cmssi"
|
|
>otherwise</SPAN
|
|
> | <SPAN CLASS="cmssi"
|
|
>t</SPAN
|
|
>} {<VAR CLASS="param"
|
|
>form</VAR
|
|
>}*)</TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0"
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
><VAR CLASS="param"
|
|
>clause</VAR
|
|
><SPAN CLASS="cmssi"
|
|
>::</SPAN
|
|
>=</TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmssi"
|
|
>normal-clause</SPAN
|
|
> | <SPAN CLASS="cmssi"
|
|
>otherwise-clause</SPAN
|
|
></TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
><P CLASS="j"
|
|
>Here the term “<VAR CLASS="param"
|
|
>clause</VAR
|
|
>” might appear to be “dead” in that it is not used in the BNF. However, the purpose of the BNF is not just to guide parsing, but also to define useful terms for reference in the descriptive text which follows. As such, the term “<VAR CLASS="param"
|
|
>clause</VAR
|
|
>” might appear in text that follows, as shorthand for “<VAR CLASS="param"
|
|
>normal-clause</VAR
|
|
> or <VAR CLASS="param"
|
|
>otherwise-clause</VAR
|
|
>.”</P
|
|
><H4 ID="sec_1_4_1_3" CLASS="HeadIV"
|
|
>1.4.1.3 Special Symbols</H4
|
|
><P CLASS="j"
|
|
>The special symbols described here are used as a notational convenience within this document, and are part of neither the Common Lisp language nor its environment.</P
|
|
><DL
|
|
><DT
|
|
><SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This indicates evaluation. For example:</P
|
|
><PRE CLASS="screen"
|
|
>(+ 4 5) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 9</PRE
|
|
><P CLASS="j"
|
|
>This means that the result of evaluating the <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> <CODE CLASS="f"
|
|
>(+ 4 5)</CODE
|
|
> is <CODE CLASS="f"
|
|
>9</CODE
|
|
>. </P
|
|
><P CLASS="j"
|
|
>If a <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> returns <A HREF="26_1_Glossary.html#multiple_values"
|
|
><EM CLASS="term"
|
|
>multiple values</EM
|
|
></A
|
|
>, those values might be shown separated by spaces, line breaks, or commas. For example:</P
|
|
><PRE CLASS="screen"
|
|
> (truncate 7 5)
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 1 2
|
|
(truncate 7 5)
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 1
|
|
2
|
|
(truncate 7 5)
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 1, 2</PRE
|
|
><P CLASS="j"
|
|
>Each of the above three examples is equivalent, and specifies that <CODE CLASS="f"
|
|
>(truncate 7 5)</CODE
|
|
> returns two values, which are <CODE CLASS="f"
|
|
>1</CODE
|
|
> and <CODE CLASS="f"
|
|
>2</CODE
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Some <A HREF="26_1_Glossary.html#conforming_implementation"
|
|
><EM CLASS="term"
|
|
>conforming implementations</EM
|
|
></A
|
|
> actually type an arrow (or some other indicator) before showing return values, while others do not.</P
|
|
></DD
|
|
><DT
|
|
><SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>The notation “<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
>” is used to denote one of several possible alternate results. The example</P
|
|
><PRE CLASS="screen"
|
|
> (char-name #\a)
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> "LOWERCASE-a"
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> "Small-A"
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> "LA01"</PRE
|
|
><P CLASS="j"
|
|
>indicates that <SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
>, <CODE CLASS="f"
|
|
>"LOWERCASE-a"</CODE
|
|
>, <CODE CLASS="f"
|
|
>"Small-A"</CODE
|
|
>, <CODE CLASS="f"
|
|
>"LA01"</CODE
|
|
> are among the possible results of <CODE CLASS="f"
|
|
>(char-name #\a)</CODE
|
|
> — each with equal preference. Unless explicitly specified otherwise, it should not be assumed that the set of possible results shown is exhaustive. Formally, the above example is equivalent to</P
|
|
><PRE CLASS="screen"
|
|
>(char-name #\a) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#implementation-dependent"
|
|
><EM CLASS="term"
|
|
>implementation-dependent</EM
|
|
></A
|
|
></PRE
|
|
><P CLASS="j"
|
|
>but it is intended to provide additional information to illustrate some of the ways in which it is permitted for implementations to diverge.</P
|
|
></DD
|
|
><DT
|
|
><SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>not </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>The notation “<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>not </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
>” is used to denote a result which is not possible. This might be used, for example, in order to emphasize a situation where some anticipated misconception might lead the reader to falsely believe that the result might be possible. For example,</P
|
|
><PRE CLASS="screen"
|
|
> (function-lambda-expression
|
|
(funcall #'(lambda (x) #'(lambda () x)) nil))
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL, <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
>, NIL
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> (LAMBDA () X), <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
>, NIL
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>not </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> NIL, <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>, NIL
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>not </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> (LAMBDA () X), <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>, NIL</PRE
|
|
></DD
|
|
><DT
|
|
><SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This indicates code equivalence. For example:</P
|
|
><PRE CLASS="screen"
|
|
>(gcd x (gcd y z)) <SPAN CLASS="cmsy"
|
|
><SPAN STYLE="font-size:16px;vertical-align:-2px"
|
|
>≡</SPAN
|
|
></SPAN
|
|
> (gcd (gcd x y) z)</PRE
|
|
><P CLASS="j"
|
|
>This means that the results and observable side-effects of evaluating the <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> <CODE CLASS="f"
|
|
>(gcd x (gcd y z))</CODE
|
|
> are always the same as the results and observable side-effects of <CODE CLASS="f"
|
|
>(gcd (gcd x y) z)</CODE
|
|
> for any <CODE CLASS="f"
|
|
>x</CODE
|
|
>, <CODE CLASS="f"
|
|
>y</CODE
|
|
>, and <CODE CLASS="f"
|
|
>z</CODE
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>Common Lisp specifies input and output with respect to a non-interactive stream model. The specific details of how interactive input and output are mapped onto that non-interactive model are <A HREF="26_1_Glossary.html#implementation-defined"
|
|
><EM CLASS="term"
|
|
>implementation-defined</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For example, <A HREF="26_1_Glossary.html#conforming_implementation"
|
|
><EM CLASS="term"
|
|
>conforming implementations</EM
|
|
></A
|
|
> are permitted to differ in issues of how interactive input is terminated. For example, the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> <A HREF="f_read.html" CLASS="funref"
|
|
><B
|
|
>read</B
|
|
></A
|
|
> terminates when the final delimiter is typed on a non-interactive stream. In some <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
>, an interactive call to <A HREF="f_read.html" CLASS="funref"
|
|
><B
|
|
>read</B
|
|
></A
|
|
> returns as soon as the final delimiter is typed, even if that delimiter is not a <A HREF="26_1_Glossary.html#newline"
|
|
><EM CLASS="term"
|
|
>newline</EM
|
|
></A
|
|
>. In other <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
>, a final <A HREF="26_1_Glossary.html#newline"
|
|
><EM CLASS="term"
|
|
>newline</EM
|
|
></A
|
|
> is always required. In still other <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
>, there might be a command which “activates” a buffer full of input without the command itself being visible on the program’s input stream. </P
|
|
><P CLASS="j"
|
|
>In the examples in this document, the notation “⊳” precedes lines where interactive input and output occurs. Within such a scenario, “<U CLASS="underline"
|
|
><SPAN CLASS="cmr"
|
|
>this</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>notation</SPAN
|
|
></U
|
|
>” notates user input. </P
|
|
><P CLASS="j"
|
|
>For example, the notation</P
|
|
><PRE CLASS="screen"
|
|
> (+ 1 (print (+ (sqrt (read)) (sqrt (read)))))
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> <U CLASS="underline"
|
|
><SPAN CLASS="cmtt"
|
|
>9</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>16</SPAN
|
|
></U
|
|
>
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> 7
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> 8</PRE
|
|
><P CLASS="j"
|
|
>shows an interaction in which “<CODE CLASS="f"
|
|
>(+ 1 (print (+ (sqrt (read)) (sqrt (read)))))</CODE
|
|
>” is a <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> to be <A HREF="26_1_Glossary.html#evaluate"
|
|
><EM CLASS="term"
|
|
>evaluated</EM
|
|
></A
|
|
>, “<CODE CLASS="f"
|
|
>9 16</CODE
|
|
> ” is interactive input, “<CODE CLASS="f"
|
|
>7</CODE
|
|
>” is interactive output, and “<CODE CLASS="f"
|
|
>8</CODE
|
|
>” is the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#yield"
|
|
><EM CLASS="term"
|
|
>yielded</EM
|
|
></A
|
|
> from the <A HREF="26_1_Glossary.html#evaluation"
|
|
><EM CLASS="term"
|
|
>evaluation</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>The use of this notation is intended to disguise small differences in interactive input and output behavior between <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Sometimes, the non-interactive stream model calls for a <A HREF="26_1_Glossary.html#newline"
|
|
><EM CLASS="term"
|
|
>newline</EM
|
|
></A
|
|
>. How that <A HREF="26_1_Glossary.html#newline"
|
|
><EM CLASS="term"
|
|
>newline</EM
|
|
></A
|
|
> character is interactively entered is an <A HREF="26_1_Glossary.html#implementation-defined"
|
|
><EM CLASS="term"
|
|
>implementation-defined</EM
|
|
></A
|
|
> detail of the user interface, but in that case, either the notation “⟨<I
|
|
>Newline</I
|
|
>⟩” or “↩” might be used.</P
|
|
><PRE CLASS="screen"
|
|
> (progn (format t "~&Who? ") (read-line))
|
|
<SPAN CLASS="cmr"
|
|
>⊳</SPAN
|
|
> Who? <U CLASS="underline"
|
|
><SPAN CLASS="cmtt"
|
|
>Fred,</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>Mary,</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>and</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>Sally</SPAN
|
|
><SPAN CLASS="cmsy"
|
|
>↩</SPAN
|
|
></U
|
|
>
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> "Fred, Mary, and Sally", <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
></PRE
|
|
></DD
|
|
></DL
|
|
><H4 ID="sec_1_4_1_4" CLASS="HeadIV"
|
|
>1.4.1.4 Objects with Multiple Notations</H4
|
|
><P CLASS="j"
|
|
>Some <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>objects</EM
|
|
></A
|
|
> in Common Lisp can be notated in more than one way. In such situations, the choice of which notation to use is technically arbitrary, but conventions may exist which convey a “point of view” or “sense of intent.”</P
|
|
><H5 ID="sec_1_4_1_4_1" CLASS="HeadV"
|
|
>1.4.1.4.1 Case in Symbols</H5
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="case in symbol names"
|
|
></SPAN
|
|
>While <A HREF="26_1_Glossary.html#case"
|
|
><EM CLASS="term"
|
|
>case</EM
|
|
></A
|
|
> is significant in the process of <A HREF="26_1_Glossary.html#intern"
|
|
><EM CLASS="term"
|
|
>interning</EM
|
|
></A
|
|
> a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
>, the <A HREF="26_1_Glossary.html#Lisp_reader"
|
|
><EM CLASS="term"
|
|
>Lisp reader</EM
|
|
></A
|
|
>, by default, attempts to canonicalize the case of a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> prior to interning; see <A HREF="23_1_Reader_Concepts.html#sec_23_1_2" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>23.1.2</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Effect</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>of</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Readtable</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Case</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>on</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>the</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Lisp</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Reader)</SPAN
|
|
></A
|
|
>. As such, case in <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbols</EM
|
|
></A
|
|
> is not, by default, significant. Throughout this document, except as explicitly noted otherwise, the case in which a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> appears is not significant; that is, <CODE CLASS="f"
|
|
>HELLO</CODE
|
|
>, <CODE CLASS="f"
|
|
>Hello</CODE
|
|
>, <CODE CLASS="f"
|
|
>hElLo</CODE
|
|
>, and <CODE CLASS="f"
|
|
>hello</CODE
|
|
> are all equivalent ways to denote a symbol whose name is <CODE CLASS="f"
|
|
>"HELLO"</CODE
|
|
>. </P
|
|
><P CLASS="j"
|
|
>The characters <A HREF="26_1_Glossary.html#backslash"
|
|
><EM CLASS="term"
|
|
>backslash</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#vertical-bar"
|
|
><EM CLASS="term"
|
|
>vertical-bar</EM
|
|
></A
|
|
> are used to explicitly quote the <A HREF="26_1_Glossary.html#case"
|
|
><EM CLASS="term"
|
|
>case</EM
|
|
></A
|
|
> and other parsing-related aspects of characters. As such, the notations <CODE CLASS="f"
|
|
>|hello|</CODE
|
|
> and <CODE CLASS="f"
|
|
>\h\e\l\l\o</CODE
|
|
> are equivalent ways to refer to a symbol whose name is <CODE CLASS="f"
|
|
>"hello"</CODE
|
|
>, and which is <A HREF="26_1_Glossary.html#distinct"
|
|
><EM CLASS="term"
|
|
>distinct</EM
|
|
></A
|
|
> from any symbol whose name is <CODE CLASS="f"
|
|
>"HELLO"</CODE
|
|
>. </P
|
|
><P CLASS="j"
|
|
>The <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbols</EM
|
|
></A
|
|
> that correspond to Common Lisp <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined names</EM
|
|
></A
|
|
> have <A HREF="26_1_Glossary.html#uppercase"
|
|
><EM CLASS="term"
|
|
>uppercase</EM
|
|
></A
|
|
> names even though their names generally appear in <A HREF="26_1_Glossary.html#lowercase"
|
|
><EM CLASS="term"
|
|
>lowercase</EM
|
|
></A
|
|
> in this document.</P
|
|
><H5 ID="sec_1_4_1_4_2" CLASS="HeadV"
|
|
>1.4.1.4.2 Numbers</H5
|
|
><P CLASS="j"
|
|
>Although Common Lisp provides a variety of ways for programs to manipulate the input and output radix for rational numbers, all numbers in this document are in decimal notation unless explicitly noted otherwise.</P
|
|
><H5 ID="sec_1_4_1_4_3" CLASS="HeadV"
|
|
>1.4.1.4.3 Use of the Dot Character</H5
|
|
><P CLASS="j"
|
|
>The dot appearing by itself in an <A HREF="26_1_Glossary.html#expression"
|
|
><EM CLASS="term"
|
|
>expression</EM
|
|
></A
|
|
> such as </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(<VAR CLASS="param"
|
|
>item1</VAR
|
|
> <VAR CLASS="param"
|
|
>item2</VAR
|
|
> . <VAR CLASS="param"
|
|
>tail</VAR
|
|
>)</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>means that <VAR CLASS="param"
|
|
>tail</VAR
|
|
> represents a <A HREF="26_1_Glossary.html#list"
|
|
><EM CLASS="term"
|
|
>list</EM
|
|
></A
|
|
> of <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>objects</EM
|
|
></A
|
|
> at the end of a list. For example, </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(A B C . (D E F))</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>is notationally equivalent to: </P
|
|
><P CLASS="j"
|
|
><CODE CLASS="f"
|
|
>(A B C D E F)</CODE
|
|
> </P
|
|
><P CLASS="j"
|
|
>Although <A HREF="26_1_Glossary.html#dot"
|
|
><EM CLASS="term"
|
|
>dot</EM
|
|
></A
|
|
> is a valid constituent character in a symbol, no <A HREF="26_1_Glossary.html#standardized"
|
|
><EM CLASS="term"
|
|
>standardized</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbols</EM
|
|
></A
|
|
> contain the character <A HREF="26_1_Glossary.html#dot"
|
|
><EM CLASS="term"
|
|
>dot</EM
|
|
></A
|
|
>, so a period that follows a reference to a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> at the end of a sentence in this document should always be interpreted as a period and never as part of the <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
>’s <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
>. For example, within this document, a sentence such as “This sample sentence refers to the symbol <A HREF="f_car.html" CLASS="funref"
|
|
><B
|
|
>car</B
|
|
></A
|
|
>.” refers to a symbol whose name is <CODE CLASS="f"
|
|
>"CAR"</CODE
|
|
> (with three letters), and never to a four-letter symbol <CODE CLASS="f"
|
|
>"CAR."</CODE
|
|
></P
|
|
><H5 ID="sec_1_4_1_4_4" CLASS="HeadV"
|
|
>1.4.1.4.4 NIL</H5
|
|
><P CLASS="j"
|
|
><SPAN CLASS="misc"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="nil"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="()"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxref" DATA-TERM="nil"
|
|
></SPAN
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
> has a variety of meanings. It is a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> in the <SPAN CLASS="packref"
|
|
><SPAN CLASS="cmtt"
|
|
>COMMON-LISP</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#package"
|
|
><EM CLASS="term"
|
|
>package</EM
|
|
></A
|
|
> with the <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
> <CODE CLASS="f"
|
|
>"NIL"</CODE
|
|
>, it is <A HREF="26_1_Glossary.html#boolean"
|
|
><EM CLASS="term"
|
|
>boolean</EM
|
|
></A
|
|
> (and <A HREF="26_1_Glossary.html#generalized_boolean"
|
|
><EM CLASS="term"
|
|
>generalized boolean</EM
|
|
></A
|
|
>) <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>, it is the <A HREF="26_1_Glossary.html#empty_list"
|
|
><EM CLASS="term"
|
|
>empty list</EM
|
|
></A
|
|
>, and it is the <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>name</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#empty_type"
|
|
><EM CLASS="term"
|
|
>empty type</EM
|
|
></A
|
|
> (a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> of all <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>types</EM
|
|
></A
|
|
>). </P
|
|
><P CLASS="j"
|
|
>Within Common Lisp, <SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
> can be notated interchangeably as either <CODE CLASS="f"
|
|
>NIL</CODE
|
|
> or <CODE CLASS="f"
|
|
>()</CODE
|
|
>. By convention, the choice of notation offers a hint as to which of its many roles it is playing.</P
|
|
><FIGURE CLASS="boxfig"
|
|
><DIV CLASS="figbody"
|
|
><TABLE CELLSPACING="0" CELLPADDING="0" RULES="GROUPS" STYLE="margin: 1ex 0" WIDTH="100%"
|
|
><THEAD
|
|
><TR
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
><B CLASS="b"
|
|
>For Evaluation?</B
|
|
></TH
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <B CLASS="b"
|
|
>Notation</B
|
|
></TH
|
|
><TH ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <B CLASS="b"
|
|
>Typically Implied Role</B
|
|
></TH
|
|
></TR
|
|
></THEAD
|
|
><TBODY
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
>Yes</SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>nil</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>use</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>as</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>a</SPAN
|
|
> <A HREF="26_1_Glossary.html#boolean"
|
|
><EM CLASS="term"
|
|
>boolean</EM
|
|
></A
|
|
><SPAN CLASS="cmr"
|
|
>.</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
>Yes</SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>'nil</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>use</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>as</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>a</SPAN
|
|
> <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
><SPAN CLASS="cmr"
|
|
>.</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
>Yes</SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>'()</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>use</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>as</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>an</SPAN
|
|
> <A HREF="26_1_Glossary.html#empty_list"
|
|
><EM CLASS="term"
|
|
>empty list</EM
|
|
></A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
>No</SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>nil</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>use</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>as</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>a</SPAN
|
|
> <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> <SPAN CLASS="cmr"
|
|
>or</SPAN
|
|
> <A HREF="26_1_Glossary.html#boolean"
|
|
><EM CLASS="term"
|
|
>boolean</EM
|
|
></A
|
|
><SPAN CLASS="cmr"
|
|
>.</SPAN
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE=";padding-right:3px"
|
|
> <SPAN CLASS="cmr"
|
|
>No</SPAN
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;padding-right:3px"
|
|
> <CODE CLASS="f"
|
|
>()</CODE
|
|
></TD
|
|
><TD ALIGN="LEFT" VALIGN="BASELINE" STYLE="padding-left:3px;"
|
|
> <SPAN CLASS="cmr"
|
|
>use</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>as</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>an</SPAN
|
|
> <A HREF="26_1_Glossary.html#empty_list"
|
|
><EM CLASS="term"
|
|
>empty list</EM
|
|
></A
|
|
><SPAN CLASS="cmr"
|
|
>.</SPAN
|
|
></TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
></DIV
|
|
><FIGCAPTION CLASS="caption"
|
|
><B
|
|
>Figure 1–1. Notations for NIL</B
|
|
></FIGCAPTION
|
|
></FIGURE
|
|
><P CLASS="j"
|
|
>Within this document only, <SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
> is also sometimes notated as <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
> to emphasize its role as a <A HREF="26_1_Glossary.html#boolean"
|
|
><EM CLASS="term"
|
|
>boolean</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For example:</P
|
|
><PRE CLASS="screen"
|
|
>(print ()) ;avoided
|
|
(defun three nil 3) ;avoided
|
|
'(nil nil) ;list of two symbols
|
|
'(() ()) ;list of empty lists
|
|
(defun three () 3) ;Emphasize empty parameter list.
|
|
(append '() '()) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> () ;Emphasize use of empty lists
|
|
(not nil) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
> ;Emphasize use as Boolean false
|
|
(get 'nil 'color) ;Emphasize use as a symbol</PRE
|
|
><P CLASS="j"
|
|
>A <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> is sometimes said to “be <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>” or “be <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
>” in some circumstance. Since no <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> object can be the same as <SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
> and all <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>objects</EM
|
|
></A
|
|
> represent <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
> when viewed as <A HREF="26_1_Glossary.html#boolean"
|
|
><EM CLASS="term"
|
|
>booleans</EM
|
|
></A
|
|
>, it would be meaningless to say that the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> was literally <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
> and uninteresting to say that it was literally <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
>. Instead, these phrases are just traditional alternative ways of saying that the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> “returns <A HREF="26_1_Glossary.html#false"
|
|
><EM CLASS="term"
|
|
>false</EM
|
|
></A
|
|
>” or “returns <A HREF="26_1_Glossary.html#true"
|
|
><EM CLASS="term"
|
|
>true</EM
|
|
></A
|
|
>,” respectively.</P
|
|
><H4 ID="sec_1_4_1_5" CLASS="HeadIV"
|
|
>1.4.1.5 Designators</H4
|
|
><P CLASS="j"
|
|
>A <DFN CLASS="newterm"
|
|
><SPAN CLASS="cmbxsl"
|
|
>designator</SPAN
|
|
></DFN
|
|
> <SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="designator"
|
|
></SPAN
|
|
>is an <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> that denotes another <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Where a <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> of an <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> is described as a <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
>, the description of the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> is written in a way that assumes that the value of the <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> is the denoted <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
>; that is, that the <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> is already of the denoted <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>. (The specific nature of the <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> denoted by a “<SPAN CLASS="metavar"
|
|
><SPAN CLASS="cmsy"
|
|
>⟪</SPAN
|
|
><I
|
|
>type</I
|
|
><SPAN CLASS="cmsy"
|
|
>⟫</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
>” or a “<A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
> for a <SPAN CLASS="metavar"
|
|
><SPAN CLASS="cmsy"
|
|
>⟪</SPAN
|
|
><I
|
|
>type</I
|
|
><SPAN CLASS="cmsy"
|
|
>⟫</SPAN
|
|
></SPAN
|
|
>” can be found in the Glossary entry for “<SPAN CLASS="metavar"
|
|
><SPAN CLASS="cmsy"
|
|
>⟪</SPAN
|
|
><I
|
|
>type</I
|
|
><SPAN CLASS="cmsy"
|
|
>⟫</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
>.”) </P
|
|
><P CLASS="j"
|
|
>For example, “<SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
>” and “the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of <A HREF="v_debug-io.html" CLASS="misc"
|
|
><B
|
|
>*standard-output*</B
|
|
></A
|
|
>” are operationally indistinguishable as <A HREF="26_1_Glossary.html#stream_designator"
|
|
><EM CLASS="term"
|
|
>stream designators</EM
|
|
></A
|
|
>. Similarly, the <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> <CODE CLASS="f"
|
|
>foo</CODE
|
|
> and the <A HREF="26_1_Glossary.html#string"
|
|
><EM CLASS="term"
|
|
>string</EM
|
|
></A
|
|
> <CODE CLASS="f"
|
|
>"FOO"</CODE
|
|
> are operationally indistinguishable as <A HREF="26_1_Glossary.html#string_designator"
|
|
><EM CLASS="term"
|
|
>string designators</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Except as otherwise noted, in a situation where the denoted <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> might be used multiple times, it is <A HREF="26_1_Glossary.html#implementation-dependent"
|
|
><EM CLASS="term"
|
|
>implementation-dependent</EM
|
|
></A
|
|
> whether the <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> is coerced only once or whether the coercion occurs each time the <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> must be used. </P
|
|
><P CLASS="j"
|
|
>For example, <A HREF="f_mapc.html" CLASS="funref"
|
|
><B
|
|
>mapcar</B
|
|
></A
|
|
> receives a <A HREF="26_1_Glossary.html#function_designator"
|
|
><EM CLASS="term"
|
|
>function designator</EM
|
|
></A
|
|
> as an argument, and its description is written as if this were simply a function. In fact, it is <A HREF="26_1_Glossary.html#implementation-dependent"
|
|
><EM CLASS="term"
|
|
>implementation-dependent</EM
|
|
></A
|
|
> whether the <A HREF="26_1_Glossary.html#function_designator"
|
|
><EM CLASS="term"
|
|
>function designator</EM
|
|
></A
|
|
> is coerced right away or whether it is carried around internally in the form that it was given as an <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>argument</EM
|
|
></A
|
|
> and re-coerced each time it is needed. In most cases, <A HREF="26_1_Glossary.html#conforming_program"
|
|
><EM CLASS="term"
|
|
>conforming programs</EM
|
|
></A
|
|
> cannot detect the distinction, but there are some pathological situations (particularly those involving self-redefining or mutually-redefining functions) which do conform and which can detect this difference. The following program is a <A HREF="26_1_Glossary.html#conforming_program"
|
|
><EM CLASS="term"
|
|
>conforming program</EM
|
|
></A
|
|
>, but might or might not have portably correct results, depending on whether its correctness depends on one or the other of the results:</P
|
|
><PRE CLASS="screen"
|
|
> (defun add-some (x)
|
|
(defun add-some (x) (+ x 2))
|
|
(+ x 1)) <SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> ADD-SOME
|
|
(mapcar 'add-some '(1 2 3 4))
|
|
<SPAN CLASS="cmsy"
|
|
><SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
></SPAN
|
|
> (2 3 4 5)
|
|
<SPAN CLASS="sp"
|
|
><SPAN CLASS="arrow withabove"
|
|
><SPAN CLASS="above"
|
|
>or </SPAN
|
|
>→</SPAN
|
|
></SPAN
|
|
> (2 4 5 6)</PRE
|
|
><P CLASS="j"
|
|
>In a few rare situations, there may be a need in a dictionary entry to refer to the <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> that was the original <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
> for a <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
>. Since naming the <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> would refer to the denoted <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
>, the phrase “the <SPAN CLASS="metavar"
|
|
><SPAN CLASS="cmsy"
|
|
>⟪</SPAN
|
|
><I
|
|
>parameter-name</I
|
|
><SPAN CLASS="cmsy"
|
|
>⟫</SPAN
|
|
></SPAN
|
|
> <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
>” can be used to refer to the <A HREF="26_1_Glossary.html#designator"
|
|
><EM CLASS="term"
|
|
>designator</EM
|
|
></A
|
|
> which was the <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>argument</EM
|
|
></A
|
|
> from which the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of <SPAN CLASS="metavar"
|
|
><SPAN CLASS="cmsy"
|
|
>⟪</SPAN
|
|
><I
|
|
>parameter-name</I
|
|
><SPAN CLASS="cmsy"
|
|
>⟫</SPAN
|
|
></SPAN
|
|
> was computed.</P
|
|
><H4 ID="sec_1_4_1_6" CLASS="HeadIV"
|
|
>1.4.1.6 Nonsense Words</H4
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxcode" DATA-TERM="foo"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxcode" DATA-TERM="bar"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxcode" DATA-TERM="baz"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxcode" DATA-TERM="quux"
|
|
></SPAN
|
|
>When a word having no pre-attached semantics is required (<I CLASS="i"
|
|
><I
|
|
>e.g.</I
|
|
></I
|
|
>, in an example), it is common in the Lisp community to use one of the words “foo,” “bar,” “baz,” and “quux.” For example, in</P
|
|
><PRE CLASS="screen"
|
|
>(defun foo (x) (+ x 1))</PRE
|
|
><P CLASS="j"
|
|
>the use of the name <CODE CLASS="f"
|
|
>foo</CODE
|
|
> is just a shorthand way of saying “please substitute your favorite name here.” </P
|
|
><P CLASS="j"
|
|
>These nonsense words have gained such prevalance of usage, that it is commonplace for newcomers to the community to begin to wonder if there is an attached semantics which they are overlooking — there is not.</P
|
|
><H3 ID="sec_1_4_2" CLASS="HeadIII"
|
|
>1.4.2 Error Terminology</H3
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="error terminology"
|
|
></SPAN
|
|
>Situations in which errors might, should, or must be signaled are described in the standard. The wording used to describe such situations is intended to have precise meaning. The following list is a glossary of those meanings.</P
|
|
><DL
|
|
><DT
|
|
><B CLASS="b"
|
|
>Safe code</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="safe"
|
|
></SPAN
|
|
>This is <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
> processed with the <SPAN CLASS="declref"
|
|
><B
|
|
>safety</B
|
|
></SPAN
|
|
> optimization at its highest setting (<CODE CLASS="f"
|
|
>3</CODE
|
|
>). <SPAN CLASS="declref"
|
|
><B
|
|
>safety</B
|
|
></SPAN
|
|
> is a lexical property of code. The phrase “the function <CODE CLASS="f"
|
|
>F</CODE
|
|
> should signal an error” means that if <CODE CLASS="f"
|
|
>F</CODE
|
|
> is invoked from code processed with the highest <SPAN CLASS="declref"
|
|
><B
|
|
>safety</B
|
|
></SPAN
|
|
> optimization, an error is signaled. It is <A HREF="26_1_Glossary.html#implementation-dependent"
|
|
><EM CLASS="term"
|
|
>implementation-dependent</EM
|
|
></A
|
|
> whether <CODE CLASS="f"
|
|
>F</CODE
|
|
> or the calling code signals the error.</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>Unsafe code</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="unsafe"
|
|
></SPAN
|
|
>This is code processed with lower safety levels. </P
|
|
><P CLASS="j"
|
|
>Unsafe code might do error checking. Implementations are permitted to treat all code as safe code all the time.</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>An error is signaled</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="signal"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="is signaled"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="must signal"
|
|
></SPAN
|
|
>This means that an error is signaled in both safe and unsafe code. <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>Conforming code</EM
|
|
></A
|
|
> may rely on the fact that the error is signaled in both safe and unsafe code. Every implementation is required to detect the error in both safe and unsafe code. For example, “an error is signaled if <A HREF="f_unexport.html" CLASS="funref"
|
|
><B
|
|
>unexport</B
|
|
></A
|
|
> is given a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> not <A HREF="26_1_Glossary.html#accessible"
|
|
><EM CLASS="term"
|
|
>accessible</EM
|
|
></A
|
|
> in the <A HREF="26_1_Glossary.html#current_package"
|
|
><EM CLASS="term"
|
|
>current package</EM
|
|
></A
|
|
>.” </P
|
|
><P CLASS="j"
|
|
>If an explicit error type is not specified, the default is <A HREF="t_error.html" CLASS="typeref"
|
|
><B
|
|
>error</B
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>An error should be signaled</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="signal"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="should signal"
|
|
></SPAN
|
|
>This means that an error is signaled in safe code, and an error might be signaled in unsafe code. <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>Conforming code</EM
|
|
></A
|
|
> may rely on the fact that the error is signaled in safe code. Every implementation is required to detect the error at least in safe code. When the error is not signaled, the “consequences are undefined” (see below). For example, “<A HREF="f__plus.html" CLASS="funref"
|
|
><B
|
|
>+</B
|
|
></A
|
|
> should signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> if any argument is not of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_number.html" CLASS="typeref"
|
|
><B
|
|
>number</B
|
|
></A
|
|
>.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>Should be prepared to signal an error</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="signal"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="prepared to signal"
|
|
></SPAN
|
|
>This is similar to “should be signaled” except that it does not imply that ‘extra effort’ has to be taken on the part of an <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> to discover an erroneous situation if the normal action of that <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> can be performed successfully with only ‘lazy’ checking. An <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementation</EM
|
|
></A
|
|
> is always permitted to signal an error, but even in <A HREF="26_1_Glossary.html#safe"
|
|
><EM CLASS="term"
|
|
>safe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, it is only required to signal the error when failing to signal it might lead to incorrect results. In <A HREF="26_1_Glossary.html#unsafe"
|
|
><EM CLASS="term"
|
|
>unsafe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, the consequences are undefined. </P
|
|
><P CLASS="j"
|
|
>For example, defining that “<A HREF="f_find.html" CLASS="funref"
|
|
><B
|
|
>find</B
|
|
></A
|
|
> should be prepared to signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> if its second <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>argument</EM
|
|
></A
|
|
> is not a <A HREF="26_1_Glossary.html#proper_list"
|
|
><EM CLASS="term"
|
|
>proper list</EM
|
|
></A
|
|
>” does not imply that an error is always signaled. The <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
></P
|
|
><PRE CLASS="screen"
|
|
>(find 'a '(a b . c))</PRE
|
|
><P CLASS="j"
|
|
>must either signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> in <A HREF="26_1_Glossary.html#safe"
|
|
><EM CLASS="term"
|
|
>safe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, else return <CODE CLASS="f"
|
|
>A</CODE
|
|
>. In <A HREF="26_1_Glossary.html#unsafe"
|
|
><EM CLASS="term"
|
|
>unsafe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, the consequences are undefined. By contrast,</P
|
|
><PRE CLASS="screen"
|
|
>(find 'd '(a b . c))</PRE
|
|
><P CLASS="j"
|
|
>must signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
> in <A HREF="26_1_Glossary.html#safe"
|
|
><EM CLASS="term"
|
|
>safe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>. In <A HREF="26_1_Glossary.html#unsafe"
|
|
><EM CLASS="term"
|
|
>unsafe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, the consequences are undefined. Also,</P
|
|
><PRE CLASS="screen"
|
|
>(find 'd '#1=(a b . #1#))</PRE
|
|
><P CLASS="j"
|
|
>in <EM CLASS="term"
|
|
>safe code</EM
|
|
> might return <SPAN CLASS="misc"
|
|
><B
|
|
>nil</B
|
|
></SPAN
|
|
> (as an <A HREF="26_1_Glossary.html#implementation-defined"
|
|
><EM CLASS="term"
|
|
>implementation-defined</EM
|
|
></A
|
|
> extension), might never return, or might signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_type-error.html" CLASS="typeref"
|
|
><B
|
|
>type-error</B
|
|
></A
|
|
>. In <A HREF="26_1_Glossary.html#unsafe"
|
|
><EM CLASS="term"
|
|
>unsafe</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
>, the consequences are undefined. </P
|
|
><P CLASS="j"
|
|
>Typically, the “should be prepared to signal” terminology is used in type checking situations where there are efficiency considerations that make it impractical to detect errors that are not relevant to the correct operation of the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>The consequences are unspecified</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="consequences"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="unspecified consequences"
|
|
></SPAN
|
|
>This means that the consequences are unpredictable but harmless. Implementations are permitted to specify the consequences of this situation. No <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> may depend on the results or effects of this situation, and all <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> is required to treat the results and effects of this situation as unpredictable but harmless. For example, “if the second argument to <A HREF="f_shared-initialize.html" CLASS="funref"
|
|
><B
|
|
>shared-initialize</B
|
|
></A
|
|
> specifies a name that does not correspond to any <A HREF="26_1_Glossary.html#slot"
|
|
><EM CLASS="term"
|
|
>slots</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#accessible"
|
|
><EM CLASS="term"
|
|
>accessible</EM
|
|
></A
|
|
> in the <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
>, the results are unspecified.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>The consequences are undefined</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="consequences"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="undefined consequences"
|
|
></SPAN
|
|
>This means that the consequences are unpredictable. The consequences may range from harmless to fatal. No <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> may depend on the results or effects. <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>Conforming code</EM
|
|
></A
|
|
> must treat the consequences as unpredictable. In places where the words “must,” “must not,” or “may not” are used, then “the consequences are undefined” if the stated requirement is not met and no specific consequence is explicitly stated. An implementation is permitted to signal an error in this case. </P
|
|
><P CLASS="j"
|
|
>For example: “Once a name has been declared by <A HREF="f_defconstant.html" CLASS="macref"
|
|
><B
|
|
>defconstant</B
|
|
></A
|
|
> to be constant, any further assignment or binding of that variable has undefined consequences.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>An error might be signaled</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxterm" DATA-TERM="signal"
|
|
></SPAN
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="might signal"
|
|
></SPAN
|
|
>This means that the situation has undefined consequences; however, if an error is signaled, it is of the specified <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>. For example, “<A HREF="f_open.html" CLASS="funref"
|
|
><B
|
|
>open</B
|
|
></A
|
|
> might signal an error of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_file-error.html" CLASS="typeref"
|
|
><B
|
|
>file-error</B
|
|
></A
|
|
>.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>The return values are unspecified</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="unspecified values"
|
|
></SPAN
|
|
>This means that only the number and nature of the return values of a <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> are not specified. However, the issue of whether or not any side-effects or transfer of control occurs is still well-specified. </P
|
|
><P CLASS="j"
|
|
>A program can be well-specified even if it uses a function whose returns values are unspecified. For example, even if the return values of some function <CODE CLASS="f"
|
|
>F</CODE
|
|
> are unspecified, an expression such as <CODE CLASS="f"
|
|
>(length (list (F)))</CODE
|
|
> is still well-specified because it does not rely on any particular aspect of the value or values returned by <CODE CLASS="f"
|
|
>F</CODE
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>Implementations may be extended to cover this situation</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="extensions"
|
|
></SPAN
|
|
>This means that the <A HREF="26_1_Glossary.html#situation"
|
|
><EM CLASS="term"
|
|
>situation</EM
|
|
></A
|
|
> has undefined consequences; however, a <A HREF="26_1_Glossary.html#conforming_implementation"
|
|
><EM CLASS="term"
|
|
>conforming implementation</EM
|
|
></A
|
|
> is free to treat the situation in a more specific way. For example, an <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementation</EM
|
|
></A
|
|
> might define that an error is signaled, or that an error should be signaled, or even that a certain well-defined non-error behavior occurs. </P
|
|
><P CLASS="j"
|
|
>No <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> may depend on the consequences of such a <A HREF="26_1_Glossary.html#situation"
|
|
><EM CLASS="term"
|
|
>situation</EM
|
|
></A
|
|
>; all <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> must treat the consequences of the situation as undefined. <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>Implementations</EM
|
|
></A
|
|
> are required to document how the situation is treated. </P
|
|
><P CLASS="j"
|
|
>For example, “implementations may be extended to define other type specifiers to have a corresponding <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>Implementations are free to extend the syntax</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="extensions"
|
|
></SPAN
|
|
>This means that in this situation implementations are permitted to define unambiguous extensions to the syntax of the <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> being described. No <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> may depend on this extension. Implementations are required to document each such extension. All <A HREF="26_1_Glossary.html#conforming_code"
|
|
><EM CLASS="term"
|
|
>conforming code</EM
|
|
></A
|
|
> is required to treat the syntax as meaningless. The standard might disallow certain extensions while allowing others. For example, “no implementation is free to extend the syntax of <A HREF="f_defclass.html" CLASS="macref"
|
|
><B
|
|
>defclass</B
|
|
></A
|
|
>.”</P
|
|
></DD
|
|
><DT
|
|
><B CLASS="b"
|
|
>A warning might be issued</B
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
><SPAN CLASS="idx" DATA-KIND="idxtext" DATA-TERM="warning"
|
|
></SPAN
|
|
>This means that <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
> are encouraged to issue a warning if the context is appropriate (<I CLASS="i"
|
|
><I
|
|
>e.g.</I
|
|
></I
|
|
>, when compiling). However, a <A HREF="26_1_Glossary.html#conforming_implementation"
|
|
><EM CLASS="term"
|
|
>conforming implementation</EM
|
|
></A
|
|
> is not required to issue a warning.</P
|
|
></DD
|
|
></DL
|
|
><H3 ID="sec_1_4_3" CLASS="HeadIII"
|
|
>1.4.3 Sections Not Formally Part Of This Standard</H3
|
|
><P CLASS="j"
|
|
>Front matter and back matter, such as the “Table of Contents,” “Index,” “Figures,” “Credits,” and “Appendix” are not considered formally part of this standard, so that we retain the flexibility needed to update these sections even at the last minute without fear of needing a formal vote to change those parts of the document. These items are quite short and very useful, however, and it is not recommended that they be removed even in an abridged version of this document. </P
|
|
><P CLASS="j"
|
|
>Within the concept sections, subsections whose names begin with the words “Note” or “Notes” or “Example” or “Examples” are provided for illustration purposes only, and are not considered part of the standard. </P
|
|
><P CLASS="j"
|
|
>An attempt has been made to place these sections last in their parent section, so that they could be removed without disturbing the contiguous numbering of the surrounding sections in order to produce a document of smaller size. </P
|
|
><P CLASS="j"
|
|
>Likewise, the “Examples” and “Notes” sections in a dictionary entry are not considered part of the standard and could be removed if necessary. </P
|
|
><P CLASS="j"
|
|
>Nevertheless, the examples provide important clarifications and consistency checks for the rest of the material, and such abridging is not recommended unless absolutely unavoidable.</P
|
|
><H3 ID="sec_1_4_4" CLASS="HeadIII"
|
|
>1.4.4 Interpreting Dictionary Entries</H3
|
|
><P CLASS="j"
|
|
>The dictionary entry for each <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined name</EM
|
|
></A
|
|
> is partitioned into sections. Except as explicitly indicated otherwise below, each section is introduced by a label identifying that section. The omission of a section implies that the section is either not applicable, or would provide no interesting information. </P
|
|
><P CLASS="j"
|
|
>This section defines the significance of each potential section in a dictionary entry.</P
|
|
><H4 ID="sec_1_4_4_1" CLASS="HeadIV"
|
|
>1.4.4.1 The “Affected By” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>For an <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>, anything that can affect the side effects of or <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> returned by the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For a <A HREF="26_1_Glossary.html#variable"
|
|
><EM CLASS="term"
|
|
>variable</EM
|
|
></A
|
|
>, anything that can affect the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#variable"
|
|
><EM CLASS="term"
|
|
>variable</EM
|
|
></A
|
|
> including <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>functions</EM
|
|
></A
|
|
> that bind or assign it.</P
|
|
><H4 ID="sec_1_4_4_2" CLASS="HeadIV"
|
|
>1.4.4.2 The “Arguments” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information describes the syntax information of entries such as those for <A HREF="26_1_Glossary.html#declaration"
|
|
><EM CLASS="term"
|
|
>declarations</EM
|
|
></A
|
|
> and special <A HREF="26_1_Glossary.html#expression"
|
|
><EM CLASS="term"
|
|
>expressions</EM
|
|
></A
|
|
> which are never <A HREF="26_1_Glossary.html#evaluate"
|
|
><EM CLASS="term"
|
|
>evaluated</EM
|
|
></A
|
|
> as <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>forms</EM
|
|
></A
|
|
>, and so do not return <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_3" CLASS="HeadIV"
|
|
>1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>An English language description of what <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> accepts and what <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> it returns, including information about defaults for <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameters</EM
|
|
></A
|
|
> corresponding to omittable <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> (such as <A HREF="26_1_Glossary.html#optional_parameter"
|
|
><EM CLASS="term"
|
|
>optional parameters</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#keyword_parameter"
|
|
><EM CLASS="term"
|
|
>keyword parameters</EM
|
|
></A
|
|
>). For <A HREF="26_1_Glossary.html#special_operator"
|
|
><EM CLASS="term"
|
|
>special operators</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macros</EM
|
|
></A
|
|
>, their <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> are not <A HREF="26_1_Glossary.html#evaluate"
|
|
><EM CLASS="term"
|
|
>evaluated</EM
|
|
></A
|
|
> unless it is explicitly stated in their descriptions that they are <A HREF="26_1_Glossary.html#evaluate"
|
|
><EM CLASS="term"
|
|
>evaluated</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Except as explicitly specified otherwise, the consequences are undefined if these type restrictions are violated.</P
|
|
><H4 ID="sec_1_4_4_4" CLASS="HeadIV"
|
|
>1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information alerts the reader to the kinds of <A HREF="26_1_Glossary.html#binding"
|
|
><EM CLASS="term"
|
|
>bindings</EM
|
|
></A
|
|
> that might potentially be affected by a declaration. Whether in fact any particular such <A HREF="26_1_Glossary.html#binding"
|
|
><EM CLASS="term"
|
|
>binding</EM
|
|
></A
|
|
> is actually affected is dependent on additional factors as well. See the “Description” section of the declaration in question for details.</P
|
|
><H4 ID="sec_1_4_4_5" CLASS="HeadIV"
|
|
>1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This appears in the dictionary entry for a <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>, and contains an ordered list of the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> defined by Common Lisp that must be in the <A HREF="26_1_Glossary.html#class_precedence_list"
|
|
><EM CLASS="term"
|
|
>class precedence list</EM
|
|
></A
|
|
> of this <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>It is permissible for other (<A HREF="26_1_Glossary.html#implementation-defined"
|
|
><EM CLASS="term"
|
|
>implementation-defined</EM
|
|
></A
|
|
>) <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> to appear in the <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementation</EM
|
|
></A
|
|
>’s <A HREF="26_1_Glossary.html#class_precedence_list"
|
|
><EM CLASS="term"
|
|
>class precedence list</EM
|
|
></A
|
|
> for the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>It is permissible for either <A HREF="t_standard-object.html" CLASS="typeref"
|
|
><B
|
|
>standard-object</B
|
|
></A
|
|
> or <A HREF="t_structure-object.html" CLASS="typeref"
|
|
><B
|
|
>structure-object</B
|
|
></A
|
|
> to appear in the <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementation</EM
|
|
></A
|
|
>’s <A HREF="26_1_Glossary.html#class_precedence_list"
|
|
><EM CLASS="term"
|
|
>class precedence list</EM
|
|
></A
|
|
>; for details, see <A HREF="4_2_Types.html#sec_4_2_2" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>4.2.2</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Type</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Relationships)</SPAN
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Except as explicitly indicated otherwise somewhere in this specification, no additional <A HREF="26_1_Glossary.html#standardized"
|
|
><EM CLASS="term"
|
|
>standardized</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> may appear in the <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementation</EM
|
|
></A
|
|
>’s <A HREF="26_1_Glossary.html#class_precedence_list"
|
|
><EM CLASS="term"
|
|
>class precedence list</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>By definition of the relationship between <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>types</EM
|
|
></A
|
|
>, the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> listed in this section are also <A HREF="26_1_Glossary.html#supertype"
|
|
><EM CLASS="term"
|
|
>supertypes</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> denoted by the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_6" CLASS="HeadIV"
|
|
>1.4.4.6 Dictionary Entries for Type Specifiers</H4
|
|
><P CLASS="j"
|
|
>The <A HREF="26_1_Glossary.html#atomic_type_specifier"
|
|
><EM CLASS="term"
|
|
>atomic type specifiers</EM
|
|
></A
|
|
> are those <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined names</EM
|
|
></A
|
|
> listed in Figure 4–2. Such dictionary entries are of kind “Class,” “Condition Type,” “System Class,” or “Type.” A description of how to interpret a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> naming one of these <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>types</EM
|
|
></A
|
|
> or <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> as an <A HREF="26_1_Glossary.html#atomic_type_specifier"
|
|
><EM CLASS="term"
|
|
>atomic type specifier</EM
|
|
></A
|
|
> is found in the “Description” section of such dictionary entries. </P
|
|
><P CLASS="j"
|
|
>The <A HREF="26_1_Glossary.html#compound_type_specifier"
|
|
><EM CLASS="term"
|
|
>compound type specifiers</EM
|
|
></A
|
|
> are those <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined names</EM
|
|
></A
|
|
> listed in Figure 4–3. Such dictionary entries are of kind “Class,” “System Class,” “Type,” or “Type Specifier.” A description of how to interpret as a <A HREF="26_1_Glossary.html#compound_type_specifier"
|
|
><EM CLASS="term"
|
|
>compound type specifier</EM
|
|
></A
|
|
> a <A HREF="26_1_Glossary.html#list"
|
|
><EM CLASS="term"
|
|
>list</EM
|
|
></A
|
|
> whose <A HREF="26_1_Glossary.html#car"
|
|
><EM CLASS="term"
|
|
>car</EM
|
|
></A
|
|
> is such a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> is found in the “Compound Type Specifier Kind,” “Compound Type Specifier Syntax,” “Compound Type Specifier Arguments,” and “Compound Type Specifier Description” sections of such dictionary entries.</P
|
|
><H5 ID="sec_1_4_4_6_1" CLASS="HeadV"
|
|
>1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry</H5
|
|
><P CLASS="j"
|
|
>An “abbreviating” <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifier</EM
|
|
></A
|
|
> is one that describes a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> for which it is in principle possible to enumerate the <A HREF="26_1_Glossary.html#element"
|
|
><EM CLASS="term"
|
|
>elements</EM
|
|
></A
|
|
>, but for which in practice it is impractical to do so. </P
|
|
><P CLASS="j"
|
|
>A “specializing” <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifier</EM
|
|
></A
|
|
> is one that describes a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> by restricting the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> of one or more components of the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>, such as <A HREF="26_1_Glossary.html#element_type"
|
|
><EM CLASS="term"
|
|
>element type</EM
|
|
></A
|
|
> or <A HREF="26_1_Glossary.html#complex_part_type"
|
|
><EM CLASS="term"
|
|
>complex part type</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>A “predicating” <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifier</EM
|
|
></A
|
|
> is one that describes a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> containing only those <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>objects</EM
|
|
></A
|
|
> that satisfy a given <A HREF="26_1_Glossary.html#predicate"
|
|
><EM CLASS="term"
|
|
>predicate</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>A “combining” <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifier</EM
|
|
></A
|
|
> is one that describes a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> in a compositional way, using combining operations (such as “and,” “or,” and “not”) on other <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>types</EM
|
|
></A
|
|
>.</P
|
|
><H5 ID="sec_1_4_4_6_2" CLASS="HeadV"
|
|
>1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry</H5
|
|
><P CLASS="j"
|
|
>This information about a <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> describes the syntax of a <A HREF="26_1_Glossary.html#compound_type_specifier"
|
|
><EM CLASS="term"
|
|
>compound type specifier</EM
|
|
></A
|
|
> for that <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Whether or not the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> is acceptable as an <A HREF="26_1_Glossary.html#atomic_type_specifier"
|
|
><EM CLASS="term"
|
|
>atomic type specifier</EM
|
|
></A
|
|
> is not represented here; see <A HREF="1_4_Definitions.html#sec_1_4_4_6" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>1.4.4.6</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Dictionary</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Entries</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>for</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Type</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Specifiers)</SPAN
|
|
></A
|
|
>.</P
|
|
><H5 ID="sec_1_4_4_6_3" CLASS="HeadV"
|
|
>1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry</H5
|
|
><P CLASS="j"
|
|
>This information describes <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> information for the structures defined in the “Compound Type Specifier Syntax” section.</P
|
|
><H5 ID="sec_1_4_4_6_4" CLASS="HeadV"
|
|
>1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry</H5
|
|
><P CLASS="j"
|
|
>This information describes the meaning of the structures defined in the “Compound Type Specifier Syntax” section.</P
|
|
><H4 ID="sec_1_4_4_7" CLASS="HeadIV"
|
|
>1.4.4.7 The “Constant Value” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information describes the unchanging <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of a <A HREF="26_1_Glossary.html#constant_variable"
|
|
><EM CLASS="term"
|
|
>constant variable</EM
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_8" CLASS="HeadIV"
|
|
>1.4.4.8 The “Description” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>A summary of the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> and all intended aspects of the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>, but does not necessarily include all the fields referenced below it (“Side Effects,” “Exceptional Situations,” <I CLASS="i"
|
|
><I
|
|
>etc.</I
|
|
></I
|
|
>)</P
|
|
><H4 ID="sec_1_4_4_9" CLASS="HeadIV"
|
|
>1.4.4.9 The “Examples” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>Examples of use of the <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>. These examples are not considered part of the standard; see <A HREF="1_4_Definitions.html#sec_1_4_3" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>1.4.3</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Sections</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Not</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Formally</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Part</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Of</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>This</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Standard)</SPAN
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_10" CLASS="HeadIV"
|
|
>1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>Three kinds of information may appear here:</P
|
|
><UL
|
|
><LI
|
|
><P CLASS="j"
|
|
>Situations that are detected by the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> and formally signaled.</P
|
|
></LI
|
|
><LI
|
|
><P CLASS="j"
|
|
>Situations that are handled by the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
>.</P
|
|
></LI
|
|
><LI
|
|
><P CLASS="j"
|
|
>Situations that may be detected by the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
>.</P
|
|
></LI
|
|
></UL
|
|
><P CLASS="j"
|
|
>This field does not include conditions that could be signaled by <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>functions</EM
|
|
></A
|
|
> passed to and called by this <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> as arguments or through dynamic variables, nor by executing subforms of this operator if it is a <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macro</EM
|
|
></A
|
|
> or <A HREF="26_1_Glossary.html#special_operator"
|
|
><EM CLASS="term"
|
|
>special operator</EM
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_11" CLASS="HeadIV"
|
|
>1.4.4.11 The “Initial Value” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information describes the initial <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> of a <A HREF="26_1_Glossary.html#dynamic_variable"
|
|
><EM CLASS="term"
|
|
>dynamic variable</EM
|
|
></A
|
|
>. Since this variable might change, see <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> restrictions in the “Value Type” section.</P
|
|
><H4 ID="sec_1_4_4_12" CLASS="HeadIV"
|
|
>1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information describes the <A HREF="26_1_Glossary.html#argument_precedence_order"
|
|
><EM CLASS="term"
|
|
>argument precedence order</EM
|
|
></A
|
|
>. If it is omitted, the <A HREF="26_1_Glossary.html#argument_precedence_order"
|
|
><EM CLASS="term"
|
|
>argument precedence order</EM
|
|
></A
|
|
> is the default (left to right).</P
|
|
><H4 ID="sec_1_4_4_13" CLASS="HeadIV"
|
|
>1.4.4.13 The “Method Signature” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>The description of a <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> includes descriptions of the <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>methods</EM
|
|
></A
|
|
> that are defined on that <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> by the standard. A method signature is used to describe the <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameters</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#parameter_specializer"
|
|
><EM CLASS="term"
|
|
>parameter specializers</EM
|
|
></A
|
|
> for each <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>method</EM
|
|
></A
|
|
>. <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>Methods</EM
|
|
></A
|
|
> defined for the <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> must be of the form described by the <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>method</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#signature"
|
|
><EM CLASS="term"
|
|
>signature</EM
|
|
></A
|
|
>.</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> (<VAR CLASS="param"
|
|
>x</VAR
|
|
> <VAR CLASS="param"
|
|
>class</VAR
|
|
>) (<VAR CLASS="param"
|
|
>y</VAR
|
|
> <SPAN CLASS="cmssi"
|
|
>t</SPAN
|
|
>) <SPAN CLASS="cmtt"
|
|
>&optional</SPAN
|
|
> <VAR CLASS="param"
|
|
>z</VAR
|
|
> <SPAN CLASS="cmtt"
|
|
>&key</SPAN
|
|
> <VAR CLASS="param"
|
|
>k</VAR
|
|
></P
|
|
><P CLASS="j"
|
|
>This <A HREF="26_1_Glossary.html#signature"
|
|
><EM CLASS="term"
|
|
>signature</EM
|
|
></A
|
|
> indicates that this method on the <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> <B CLASS="b"
|
|
>F</B
|
|
> has two <A HREF="26_1_Glossary.html#required_parameter"
|
|
><EM CLASS="term"
|
|
>required parameters</EM
|
|
></A
|
|
>: <VAR CLASS="param"
|
|
>x</VAR
|
|
>, which must be a <A HREF="26_1_Glossary.html#generalized_instance"
|
|
><EM CLASS="term"
|
|
>generalized instance</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
> <VAR CLASS="param"
|
|
>class</VAR
|
|
>; and <VAR CLASS="param"
|
|
>y</VAR
|
|
>, which can be any <A HREF="26_1_Glossary.html#object"
|
|
><EM CLASS="term"
|
|
>object</EM
|
|
></A
|
|
> (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, a <A HREF="26_1_Glossary.html#generalized_instance"
|
|
><EM CLASS="term"
|
|
>generalized instance</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
> <A HREF="t_t.html" CLASS="typeref"
|
|
><B
|
|
>t</B
|
|
></A
|
|
>). In addition, there is an <A HREF="26_1_Glossary.html#optional_parameter"
|
|
><EM CLASS="term"
|
|
>optional parameter</EM
|
|
></A
|
|
> <VAR CLASS="param"
|
|
>z</VAR
|
|
> and a <A HREF="26_1_Glossary.html#keyword_parameter"
|
|
><EM CLASS="term"
|
|
>keyword parameter</EM
|
|
></A
|
|
> <VAR CLASS="param"
|
|
>k</VAR
|
|
>. This <A HREF="26_1_Glossary.html#signature"
|
|
><EM CLASS="term"
|
|
>signature</EM
|
|
></A
|
|
> also indicates that this method on <CODE CLASS="f"
|
|
>F</CODE
|
|
> is a <A HREF="26_1_Glossary.html#primary_method"
|
|
><EM CLASS="term"
|
|
>primary method</EM
|
|
></A
|
|
> and has no <A HREF="26_1_Glossary.html#qualifier"
|
|
><EM CLASS="term"
|
|
>qualifiers</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For each <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
>, the <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>argument</EM
|
|
></A
|
|
> supplied must be in the intersection of the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> specified in the description of the corresponding <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> and the <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> given in the <A HREF="26_1_Glossary.html#signature"
|
|
><EM CLASS="term"
|
|
>signature</EM
|
|
></A
|
|
> of some <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>method</EM
|
|
></A
|
|
> (including not only those <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>methods</EM
|
|
></A
|
|
> defined in this specification, but also <A HREF="26_1_Glossary.html#implementation-defined"
|
|
><EM CLASS="term"
|
|
>implementation-defined</EM
|
|
></A
|
|
> or user-defined <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>methods</EM
|
|
></A
|
|
> in situations where the definition of such <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>methods</EM
|
|
></A
|
|
> is permitted).</P
|
|
><H4 ID="sec_1_4_4_14" CLASS="HeadIV"
|
|
>1.4.4.14 The “Name” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This section introduces the dictionary entry. It is not explicitly labeled. It appears preceded and followed by a horizontal bar. </P
|
|
><P CLASS="j"
|
|
>In large print at left, the <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined name</EM
|
|
></A
|
|
> appears; if more than one <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined name</EM
|
|
></A
|
|
> is to be described by the entry, all such <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>names</EM
|
|
></A
|
|
> are shown separated by commas. </P
|
|
><P CLASS="j"
|
|
>In somewhat smaller italic print at right is an indication of what kind of dictionary entry this is. Possible values are:</P
|
|
><DL
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Accessor</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is an <A HREF="26_1_Glossary.html#accessor"
|
|
><EM CLASS="term"
|
|
>accessor</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Class</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Condition</I
|
|
> <I
|
|
>Type</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#subtype"
|
|
><EM CLASS="term"
|
|
>subtype</EM
|
|
></A
|
|
> of <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> <A HREF="t_condition.html" CLASS="typeref"
|
|
><B
|
|
>condition</B
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Constant</I
|
|
> <I
|
|
>Variable</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#constant_variable"
|
|
><EM CLASS="term"
|
|
>constant variable</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Declaration</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#declaration_identifier"
|
|
><EM CLASS="term"
|
|
>declaration identifier</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Function</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Local</I
|
|
> <I
|
|
>Function</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> that is defined only lexically within the scope of some other <A HREF="26_1_Glossary.html#macro_form"
|
|
><EM CLASS="term"
|
|
>macro form</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Local</I
|
|
> <I
|
|
>Macro</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macro</EM
|
|
></A
|
|
> that is defined only lexically within the scope of some other <A HREF="26_1_Glossary.html#macro_form"
|
|
><EM CLASS="term"
|
|
>macro form</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Macro</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macro</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Restart</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#restart"
|
|
><EM CLASS="term"
|
|
>restart</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Special</I
|
|
> <I
|
|
>Operator</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#special_operator"
|
|
><EM CLASS="term"
|
|
>special operator</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Standard</I
|
|
> <I
|
|
>Generic</I
|
|
> <I
|
|
>Function</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#standard_generic_function"
|
|
><EM CLASS="term"
|
|
>standard generic function</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Symbol</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#symbol"
|
|
><EM CLASS="term"
|
|
>symbol</EM
|
|
></A
|
|
> that is specially recognized in some particular situation, such as the syntax of a <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macro</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>System</I
|
|
> <I
|
|
>Class</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is like <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>, but it identifies a <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
> that is potentially a <A HREF="26_1_Glossary.html#built-in_class"
|
|
><EM CLASS="term"
|
|
>built-in class</EM
|
|
></A
|
|
>. (No <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
> is actually required to be a <A HREF="26_1_Glossary.html#built-in_class"
|
|
><EM CLASS="term"
|
|
>built-in class</EM
|
|
></A
|
|
>.)</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Type</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is an <A HREF="26_1_Glossary.html#atomic_type_specifier"
|
|
><EM CLASS="term"
|
|
>atomic type specifier</EM
|
|
></A
|
|
>, and depending on information for each particular entry, may subject to form other <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifiers</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Type</I
|
|
> <I
|
|
>Specifier</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined name</EM
|
|
></A
|
|
> that is not an <A HREF="26_1_Glossary.html#atomic_type_specifier"
|
|
><EM CLASS="term"
|
|
>atomic type specifier</EM
|
|
></A
|
|
>, but that can be used in constructing valid <A HREF="26_1_Glossary.html#type_specifier"
|
|
><EM CLASS="term"
|
|
>type specifiers</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
><DT
|
|
><I CLASS="i"
|
|
><I
|
|
>Variable</I
|
|
></I
|
|
></DT
|
|
><DD
|
|
><P CLASS="j"
|
|
>This is a <A HREF="26_1_Glossary.html#dynamic_variable"
|
|
><EM CLASS="term"
|
|
>dynamic variable</EM
|
|
></A
|
|
>.</P
|
|
></DD
|
|
></DL
|
|
><H4 ID="sec_1_4_4_15" CLASS="HeadIV"
|
|
>1.4.4.15 The “Notes” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>Information not found elsewhere in this description which pertains to this <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>. Among other things, this might include cross reference information, code equivalences, stylistic hints, implementation hints, typical uses. This information is not considered part of the standard; any <A HREF="26_1_Glossary.html#conforming_implementation"
|
|
><EM CLASS="term"
|
|
>conforming implementation</EM
|
|
></A
|
|
> or <A HREF="26_1_Glossary.html#conforming_program"
|
|
><EM CLASS="term"
|
|
>conforming program</EM
|
|
></A
|
|
> is permitted to ignore the presence of this information.</P
|
|
><H4 ID="sec_1_4_4_16" CLASS="HeadIV"
|
|
>1.4.4.16 The “Pronunciation” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This offers a suggested pronunciation for <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined names</EM
|
|
></A
|
|
> so that people not in verbal communication with the original designers can figure out how to pronounce words that are not in normal English usage. This information is advisory only, and is not considered part of the standard. For brevity, it is only provided for entries with names that are specific to Common Lisp and would not be found in <I
|
|
>Webster’s</I
|
|
> <I
|
|
>Third</I
|
|
> <I
|
|
>New</I
|
|
> <I
|
|
>International</I
|
|
> <I
|
|
>Dictionary</I
|
|
> <I
|
|
>the</I
|
|
> <I
|
|
>English</I
|
|
> <I
|
|
>Language,</I
|
|
> <I
|
|
>Unabridged</I
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_17" CLASS="HeadIV"
|
|
>1.4.4.17 The “See Also” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>List of references to other parts of this standard that offer information relevant to this <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>. This list is not part of the standard.</P
|
|
><H4 ID="sec_1_4_4_18" CLASS="HeadIV"
|
|
>1.4.4.18 The “Side Effects” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>Anything that is changed as a result of the evaluation of the <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
> containing this <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
>.</P
|
|
><H4 ID="sec_1_4_4_19" CLASS="HeadIV"
|
|
>1.4.4.19 The “Supertypes” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This appears in the dictionary entry for a <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>, and contains a list of the <A HREF="26_1_Glossary.html#standardized"
|
|
><EM CLASS="term"
|
|
>standardized</EM
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>types</EM
|
|
></A
|
|
> that must be <A HREF="26_1_Glossary.html#supertype"
|
|
><EM CLASS="term"
|
|
>supertypes</EM
|
|
></A
|
|
> of this <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>In <A HREF="26_1_Glossary.html#implementation"
|
|
><EM CLASS="term"
|
|
>implementations</EM
|
|
></A
|
|
> where there is a corresponding <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>class</EM
|
|
></A
|
|
>, the order of the <A HREF="26_1_Glossary.html#class"
|
|
><EM CLASS="term"
|
|
>classes</EM
|
|
></A
|
|
> in the <A HREF="26_1_Glossary.html#class_precedence_list"
|
|
><EM CLASS="term"
|
|
>class precedence list</EM
|
|
></A
|
|
> is consistent with the order presented in this section.</P
|
|
><H4 ID="sec_1_4_4_20" CLASS="HeadIV"
|
|
>1.4.4.20 The “Syntax” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This section describes how to use the <A HREF="26_1_Glossary.html#defined_name"
|
|
><EM CLASS="term"
|
|
>defined name</EM
|
|
></A
|
|
> in code. The “Syntax” description for a <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> describes the <A HREF="26_1_Glossary.html#lambda_list"
|
|
><EM CLASS="term"
|
|
>lambda list</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#generic_function"
|
|
><EM CLASS="term"
|
|
>generic function</EM
|
|
></A
|
|
> itself, while the “Method Signatures” describe the <A HREF="26_1_Glossary.html#lambda_list"
|
|
><EM CLASS="term"
|
|
>lambda lists</EM
|
|
></A
|
|
> of the defined <A HREF="26_1_Glossary.html#method"
|
|
><EM CLASS="term"
|
|
>methods</EM
|
|
></A
|
|
>. The “Syntax” description for an <A HREF="26_1_Glossary.html#ordinary_function"
|
|
><EM CLASS="term"
|
|
>ordinary function</EM
|
|
></A
|
|
>, a <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macro</EM
|
|
></A
|
|
>, or a <A HREF="26_1_Glossary.html#special_operator"
|
|
><EM CLASS="term"
|
|
>special operator</EM
|
|
></A
|
|
> describes its <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameters</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For example, an <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> description might say:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmssi"
|
|
>x</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>y</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>&optional</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>z</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>&key</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>k</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
>This description indicates that the function <B CLASS="b"
|
|
>F</B
|
|
> has two required parameters, <VAR CLASS="param"
|
|
>x</VAR
|
|
> and <VAR CLASS="param"
|
|
>y</VAR
|
|
>. In addition, there is an optional parameter <VAR CLASS="param"
|
|
>z</VAR
|
|
> and a keyword parameter <VAR CLASS="param"
|
|
>k</VAR
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For <A HREF="26_1_Glossary.html#macro"
|
|
><EM CLASS="term"
|
|
>macros</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#special_operator"
|
|
><EM CLASS="term"
|
|
>special operators</EM
|
|
></A
|
|
>, syntax is given in modified BNF notation; see <A HREF="1_4_Definitions.html#sec_1_4_1_2" CLASS="secref"
|
|
><SPAN CLASS="cmr"
|
|
>Section</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>1.4.1.2</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>(Modified</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>BNF</SPAN
|
|
> <SPAN CLASS="cmr"
|
|
>Syntax)</SPAN
|
|
></A
|
|
>. For <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>functions</EM
|
|
></A
|
|
> a <A HREF="26_1_Glossary.html#lambda_list"
|
|
><EM CLASS="term"
|
|
>lambda list</EM
|
|
></A
|
|
> is given. In both cases, however, the outermost parentheses are omitted, and default value information is omitted.</P
|
|
><H5 ID="sec_1_4_4_20_1" CLASS="HeadV"
|
|
>1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators</H5
|
|
><P CLASS="j"
|
|
>If two descriptions exist for the same operation but with different numbers of arguments, then the extra arguments are to be treated as optional. For example, this pair of lines:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>file-position</B
|
|
> <SPAN CLASS="cmssi"
|
|
>stream</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>position</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
><B
|
|
>file-position</B
|
|
> <SPAN CLASS="cmssi"
|
|
>stream</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>position-spec</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>success-p</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
>is operationally equivalent to this line:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>file-position</B
|
|
> <SPAN CLASS="cmssi"
|
|
>stream</SPAN
|
|
> <SPAN CLASS="cmtt"
|
|
>&optional</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>position-spec</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>result</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
>and differs only in that it provides on opportunity to introduce different names for <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameter</EM
|
|
></A
|
|
> and <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> for each case. The separated (multi-line) notation is used when an <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operator</EM
|
|
></A
|
|
> is overloaded in such a way that the <A HREF="26_1_Glossary.html#parameter"
|
|
><EM CLASS="term"
|
|
>parameters</EM
|
|
></A
|
|
> are used in different ways depending on how many <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> are supplied (<I CLASS="i"
|
|
><I
|
|
>e.g.</I
|
|
></I
|
|
>, for the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> <A HREF="f__dash.html" CLASS="funref"
|
|
><B
|
|
>/</B
|
|
></A
|
|
>) or the return values are different in the two cases (<I CLASS="i"
|
|
><I
|
|
>e.g.</I
|
|
></I
|
|
>, for the <A HREF="26_1_Glossary.html#function"
|
|
><EM CLASS="term"
|
|
>function</EM
|
|
></A
|
|
> <A HREF="f_file-position.html" CLASS="funref"
|
|
><B
|
|
>file-position</B
|
|
></A
|
|
>).</P
|
|
><H5 ID="sec_1_4_4_20_2" CLASS="HeadV"
|
|
>1.4.4.20.2 Naming Conventions for Rest Parameters</H5
|
|
><P CLASS="j"
|
|
>Within this specification, if the name of a <A HREF="26_1_Glossary.html#rest_parameter"
|
|
><EM CLASS="term"
|
|
>rest parameter</EM
|
|
></A
|
|
> is chosen to be a plural noun, use of that name in <VAR CLASS="param"
|
|
>parameter</VAR
|
|
> font refers to the <A HREF="26_1_Glossary.html#list"
|
|
><EM CLASS="term"
|
|
>list</EM
|
|
></A
|
|
> to which the <A HREF="26_1_Glossary.html#rest_parameter"
|
|
><EM CLASS="term"
|
|
>rest parameter</EM
|
|
></A
|
|
> is bound. Use of the singular form of that name in <VAR CLASS="param"
|
|
>parameter</VAR
|
|
> font refers to an <A HREF="26_1_Glossary.html#element"
|
|
><EM CLASS="term"
|
|
>element</EM
|
|
></A
|
|
> of that <A HREF="26_1_Glossary.html#list"
|
|
><EM CLASS="term"
|
|
>list</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>For example, given a syntax description such as:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <VAR CLASS="param"
|
|
>arguments</VAR
|
|
></P
|
|
><P CLASS="j"
|
|
>it is appropriate to refer either to the <A HREF="26_1_Glossary.html#rest_parameter"
|
|
><EM CLASS="term"
|
|
>rest parameter</EM
|
|
></A
|
|
> named <VAR CLASS="param"
|
|
>arguments</VAR
|
|
> by name, or to one of its elements by speaking of “an <VAR CLASS="param"
|
|
>argument</VAR
|
|
>,” “some <VAR CLASS="param"
|
|
>argument</VAR
|
|
>,” “each <VAR CLASS="param"
|
|
>argument</VAR
|
|
>” <I CLASS="i"
|
|
><I
|
|
>etc.</I
|
|
></I
|
|
></P
|
|
><H5 ID="sec_1_4_4_20_3" CLASS="HeadV"
|
|
>1.4.4.20.3 Requiring Non-Null Rest Parameters in the “Syntax” Section</H5
|
|
><P CLASS="j"
|
|
>In some cases it is useful to refer to all arguments equally as a single aggregation using a <A HREF="26_1_Glossary.html#rest_parameter"
|
|
><EM CLASS="term"
|
|
>rest parameter</EM
|
|
></A
|
|
> while at the same time requiring at least one argument. A variety of imperative and declarative means are available in <A HREF="26_1_Glossary.html#code"
|
|
><EM CLASS="term"
|
|
>code</EM
|
|
></A
|
|
> for expressing such a restriction, however they generally do not manifest themselves in a <A HREF="26_1_Glossary.html#lambda_list"
|
|
><EM CLASS="term"
|
|
>lambda list</EM
|
|
></A
|
|
>. For descriptive purposes within this specification,</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>arguments</SPAN
|
|
><SUP CLASS="sup"
|
|
><SPAN CLASS="cmssi"
|
|
>+</SPAN
|
|
></SUP
|
|
></P
|
|
><P CLASS="j"
|
|
>means the same as</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmtt"
|
|
>&rest</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>arguments</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
>but introduces the additional requirement that there be at least one <VAR CLASS="param"
|
|
>argument</VAR
|
|
>.</P
|
|
><H5 ID="sec_1_4_4_20_4" CLASS="HeadV"
|
|
>1.4.4.20.4 Return values in the “Syntax” Section</H5
|
|
><P CLASS="j"
|
|
>An evaluation arrow “<SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
>” precedes a list of <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> to be returned. For example:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmssi"
|
|
>a</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>b</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>c</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>x</SPAN
|
|
></P
|
|
><P CLASS="j"
|
|
>indicates that <CODE CLASS="f"
|
|
>F</CODE
|
|
> is an operator that has three <A HREF="26_1_Glossary.html#required_parameter"
|
|
><EM CLASS="term"
|
|
>required parameters</EM
|
|
></A
|
|
> (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, <VAR CLASS="param"
|
|
>a</VAR
|
|
>, <VAR CLASS="param"
|
|
>b</VAR
|
|
>, and <VAR CLASS="param"
|
|
>c</VAR
|
|
>) and that returns one <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, <VAR CLASS="param"
|
|
>x</VAR
|
|
>). If more than one <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>value</EM
|
|
></A
|
|
> is returned by an operator, the <A HREF="26_1_Glossary.html#name"
|
|
><EM CLASS="term"
|
|
>names</EM
|
|
></A
|
|
> of the <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> are separated by commas, as in:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmssi"
|
|
>a</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>b</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>c</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>x,</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>y,</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>z</SPAN
|
|
></P
|
|
><H6 ID="sec_1_4_4_20_4_1" CLASS="HeadVI"
|
|
>1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section</H6
|
|
><P CLASS="j"
|
|
>If no <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> are permitted, or no <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
> are returned, a special notation is used to make this more visually apparent. For example,</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> ⟨<I
|
|
>no</I
|
|
> <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
>⟩ <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
> ⟨<I
|
|
>no</I
|
|
> <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
>⟩</P
|
|
><P CLASS="j"
|
|
>indicates that <CODE CLASS="f"
|
|
>F</CODE
|
|
> is an operator that accepts no <A HREF="26_1_Glossary.html#argument"
|
|
><EM CLASS="term"
|
|
>arguments</EM
|
|
></A
|
|
> and returns no <A HREF="26_1_Glossary.html#value"
|
|
><EM CLASS="term"
|
|
>values</EM
|
|
></A
|
|
>.</P
|
|
><H6 ID="sec_1_4_4_20_4_2" CLASS="HeadVI"
|
|
>1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section</H6
|
|
><P CLASS="j"
|
|
>Some <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operators</EM
|
|
></A
|
|
> perform an unconditional transfer of control, and so never have any return values. Such <A HREF="26_1_Glossary.html#operator"
|
|
><EM CLASS="term"
|
|
>operators</EM
|
|
></A
|
|
> are notated using a notation such as the following:</P
|
|
><P CLASS="j"
|
|
><B
|
|
>F</B
|
|
> <SPAN CLASS="cmssi"
|
|
>a</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>b</SPAN
|
|
> <SPAN CLASS="cmssi"
|
|
>c</SPAN
|
|
> <SPAN CLASS="arrow"
|
|
>→</SPAN
|
|
>|</P
|
|
><H4 ID="sec_1_4_4_21" CLASS="HeadIV"
|
|
>1.4.4.21 The “Valid Context” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information is used by dictionary entries such as “Declarations” in order to restrict the context in which the declaration may appear. </P
|
|
><P CLASS="j"
|
|
>A given “Declaration” might appear in a <A HREF="26_1_Glossary.html#declaration"
|
|
><EM CLASS="term"
|
|
>declaration</EM
|
|
></A
|
|
> (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, a <A HREF="m_declare.html" CLASS="misc"
|
|
><B
|
|
>declare</B
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#expression"
|
|
><EM CLASS="term"
|
|
>expression</EM
|
|
></A
|
|
>), a <A HREF="26_1_Glossary.html#proclamation"
|
|
><EM CLASS="term"
|
|
>proclamation</EM
|
|
></A
|
|
> (<I CLASS="i"
|
|
><I
|
|
>i.e.</I
|
|
></I
|
|
>, a <A HREF="f_declaim.html" CLASS="macref"
|
|
><B
|
|
>declaim</B
|
|
></A
|
|
> or <A HREF="f_proclaim.html" CLASS="funref"
|
|
><B
|
|
>proclaim</B
|
|
></A
|
|
> <A HREF="26_1_Glossary.html#form"
|
|
><EM CLASS="term"
|
|
>form</EM
|
|
></A
|
|
>), or both.</P
|
|
><H4 ID="sec_1_4_4_22" CLASS="HeadIV"
|
|
>1.4.4.22 The “Value Type” Section of a Dictionary Entry</H4
|
|
><P CLASS="j"
|
|
>This information describes any <A HREF="26_1_Glossary.html#type"
|
|
><EM CLASS="term"
|
|
>type</EM
|
|
></A
|
|
> restrictions on a <A HREF="26_1_Glossary.html#dynamic_variable"
|
|
><EM CLASS="term"
|
|
>dynamic variable</EM
|
|
></A
|
|
>. </P
|
|
><P CLASS="j"
|
|
>Except as explicitly specified otherwise, the consequences are undefined if this type restriction is violated.</P
|
|
></SECTION
|
|
></DIV
|
|
><DIV CLASS="footer"
|
|
><DIV CLASS="btmnav"
|
|
><A HREF="1_3_Referenced_Publications.html" CLASS="prev"
|
|
>←</A
|
|
><A HREF="1_5_Conformance.html" CLASS="next"
|
|
>→</A
|
|
></DIV
|
|
><DIV CLASS="trail"
|
|
>Conversion to HTML copyright 2023 by Gilbert Baumann</DIV
|
|
></DIV
|
|
></DIV
|
|
><SCRIPT
|
|
>domReady();</SCRIPT
|
|
></BODY
|
|
></HTML
|
|
> |