1
0
Fork 0
cl-sites/novaspec.org/cl/1_6_Language_Extensions.html
2025-02-05 18:52:26 +01:00

165 lines
No EOL
5.2 KiB
HTML

<!DOCTYPE HTML>
<HTML LANG="en-us"
><HEAD
><TITLE
>1.6 Language Extensions | Common Lisp Nova Spec</TITLE
><META CHARSET="US-ASCII"
><LINK REL="canonical" HREF="1_6_Language_Extensions.html"
><LINK REL="next" HREF="1_7_Language_Subsets.html" TYPE="text/html" TITLE="1.7 Language Subsets"
><LINK REL="prev" HREF="1_5_Conformance.html" TYPE="text/html" TITLE="1.5 Conformance"
><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"
>&#8594; <A HREF="1_Introduction.html"
>1. Introduction</A
></SPAN
> <SPAN CLASS="breadcrumb-item"
>&#8594; <A HREF="1_6_Language_Extensions.html"
>1.6 Language Extensions</A
></SPAN
></DIV
><DIV CLASS="apropos"
><DIV CLASS="apropos-io"
><A HREF="1_5_Conformance.html" CLASS="prev"
>&#8592;</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_7_Language_Subsets.html" CLASS="next"
>&#8594;</A
></DIV
><DIV ID="apropos-res"
></DIV
></DIV
></DIV
><DIV CLASS="matter"
><SECTION
><H2 ID="sec_1_6" CLASS="HeadII"
>1.6 Language Extensions</H2
><UL CLASS="subtoc"
></UL
><P CLASS="j"
>A language extension is any documented <A HREF="26_1_Glossary.html#implementation-defined"
><EM CLASS="term"
>implementation-defined</EM
></A
> behavior of a <A HREF="26_1_Glossary.html#defined_name"
><EM CLASS="term"
>defined name</EM
></A
> in this standard that varies from the behavior described in this standard, or a documented consequence of a situation that the standard specifies as undefined, unspecified, or extendable by the implementation. For example, if this standard says that &#8220;the results are unspecified,&#8221; an extension would be to specify the results. </P
><P CLASS="j"
>If the correct behavior of a program depends on the results provided by an extension, only implementations with the same extension will execute the program correctly. Note that such a program might be non-conforming. Also, if this standard says that &#8220;an implementation may be extended,&#8221; a conforming, but possibly non-portable, program can be written using an extension. </P
><P CLASS="j"
>An implementation can have extensions, provided they do not alter the behavior of conforming code and provided they are not explicitly prohibited by this standard. </P
><P CLASS="j"
>The term &#8220;extension&#8221; refers only to extensions available upon startup. An implementation is free to allow or prohibit redefinition of an extension. </P
><P CLASS="j"
>The following list contains specific guidance to implementations concerning certain types of extensions.</P
><DL
><DT
><B CLASS="b"
>Extra return values</B
></DT
><DD
><P CLASS="j"
>An implementation must return exactly the number of return values specified by this standard unless the standard specifically indicates otherwise.</P
></DD
><DT
><B CLASS="b"
>Unsolicited messages</B
></DT
><DD
><P CLASS="j"
>No output can be produced by a function other than that specified in the standard or due to the signaling of <A HREF="26_1_Glossary.html#condition"
><EM CLASS="term"
>conditions</EM
></A
> detected by the function. </P
><P CLASS="j"
>Unsolicited output, such as garbage collection notifications and autoload heralds, should not go directly to the <A HREF="26_1_Glossary.html#stream"
><EM CLASS="term"
>stream</EM
></A
> that is the value of a <A HREF="26_1_Glossary.html#stream"
><EM CLASS="term"
>stream</EM
></A
> variable defined in this standard, but can go indirectly to <A HREF="26_1_Glossary.html#terminal_I_dashO"
><EM CLASS="term"
>terminal I/O</EM
></A
> by using a <A HREF="26_1_Glossary.html#synonym_stream"
><EM CLASS="term"
>synonym stream</EM
></A
> to <A HREF="v_terminal-io.html" CLASS="varref"
><B
>*terminal-io*</B
></A
>. </P
><P CLASS="j"
>Progress reports from such functions as <A HREF="f_load.html" CLASS="funref"
><B
>load</B
></A
> and <A HREF="f_compile.html" CLASS="funref"
><B
>compile</B
></A
> are considered solicited, and are not covered by this prohibition.</P
></DD
><DT
><B CLASS="b"
>Implementation of macros and special forms</B
></DT
><DD
><P CLASS="j"
><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
> defined in this standard must not be <A HREF="26_1_Glossary.html#function"
><EM CLASS="term"
>functions</EM
></A
>.</P
></DD
></DL
></SECTION
></DIV
><DIV CLASS="footer"
><DIV CLASS="btmnav"
><A HREF="1_5_Conformance.html" CLASS="prev"
>&#8592;</A
><A HREF="1_7_Language_Subsets.html" CLASS="next"
>&#8594;</A
></DIV
><DIV CLASS="trail"
>Conversion to HTML copyright 2023 by Gilbert Baumann</DIV
></DIV
></DIV
><SCRIPT
>domReady();</SCRIPT
></BODY
></HTML
>