1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Language Extensions (ANSI and GNU Common Lisp Document)</title>
<meta name="description" content="Language Extensions (ANSI and GNU Common Lisp Document)">
<meta name="keywords" content="Language Extensions (ANSI and GNU Common Lisp Document)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html" rel="start" title="Top">
<link href="Introduction-_0028Introduction_0029.html" rel="up" title="Introduction (Introduction)">
<link href="Language-Subsets.html" rel="next" title="Language Subsets">
<link href="Use-of-Read_002dTime-Conditionals.html" rel="prev" title="Use of Read-Time Conditionals">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<span id="Language-Extensions"></span><div class="header">
<p>
Next: <a href="Language-Subsets.html" accesskey="n" rel="next">Language Subsets</a>, Previous: <a href="Conformance.html" accesskey="p" rel="prev">Conformance</a>, Up: <a href="Introduction-_0028Introduction_0029.html" accesskey="u" rel="up">Introduction (Introduction)</a> </p>
</div>
<hr>
<span id="Language-Extensions-1"></span><h3 class="section">1.6 Language Extensions</h3>
<p>A language extension is any documented <i>implementation-defined</i> behavior
of a <i>defined name</i> 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 “the results are unspecified,” an extension would be to specify
the results.
</p>
<p>[Reviewer Note by Barmar: This contradicts previous definitions of conforming code.]
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 “an implementation
may be extended,” a conforming, but possibly non-portable, program
can be written using an extension.
</p>
<p>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>The term “extension” refers only to extensions available upon
startup. An implementation is free to allow or prohibit redefinition
of an extension.
</p>
<p>The following list contains specific guidance to implementations
concerning certain types of extensions.
</p><dl compact="compact">
<dt><b>Extra return values</b></dt>
<dd>
<p>An implementation must return exactly
the number of return values specified by this standard unless the
standard specifically indicates otherwise.
</p>
</dd>
<dt><b>Unsolicited messages</b></dt>
<dd>
<p>No output can be produced by a function other than that specified in
the standard or due to the signaling of <i>conditions</i>
detected by the function.
</p>
<p>Unsolicited output, such as garbage collection notifications and
autoload heralds, should not go directly to the <i>stream</i>
that is the value of a <i>stream</i> variable defined in this
standard, but can go indirectly to <i>terminal I/O</i> by using a
<i>synonym stream</i> to <b>*terminal-io*</b>.
</p>
<p>Progress reports from such functions as <b>load</b> and
<b>compile</b> are considered solicited, and are not covered by
this prohibition.
</p>
</dd>
<dt><b>Implementation of macros and special forms</b></dt>
<dd>
<p><i>Macros</i> and <i>special operators</i> defined in this standard
must not be <i>functions</i>.
</p>
</dd>
</dl>
<hr>
<div class="header">
<p>
Next: <a href="Language-Subsets.html" accesskey="n" rel="next">Language Subsets</a>, Previous: <a href="Conformance.html" accesskey="p" rel="prev">Conformance</a>, Up: <a href="Introduction-_0028Introduction_0029.html" accesskey="u" rel="up">Introduction (Introduction)</a> </p>
</div>
</body>
</html>
|