1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/chap-24/ce-c-dictionary/features_variable.html

58 lines
39 KiB
HTML
Raw Normal View History

2024-03-13 23:00:32 +01:00
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-chap-24/ce-c-dictionary/features_variable" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">features | Common Lisp (New) Language Reference</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://lisp-docs.github.io/cl-language-reference/img/1024px-Lisp_logo.svg.png"><meta data-rh="true" name="twitter:image" content="https://lisp-docs.github.io/cl-language-reference/img/1024px-Lisp_logo.svg.png"><meta data-rh="true" property="og:url" content="https://lisp-docs.github.io/cl-language-reference/chap-24/ce-c-dictionary/features_variable"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="google-site-verification" content="Vzaw013_bfdKeUVG89Ch3W1zC9_vH9ID2dPB9Dz0vr0"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="features | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="Expanded Reference: \features\"><meta data-rh="true" property="og:description" content="Expanded Reference: \features\"><link data-rh="true" rel="icon" href="../../img/favicon.ico"><link data-rh="true" rel="canonical" href="features_variable.html"><link data-rh="true" rel="alternate" href="features_variable.html" hreflang="en"><link data-rh="true" rel="alternate" href="features_variable.html" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://C1F2Q5VM6X-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8TJCE4NSF8"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-8TJCE4NSF8",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Common Lisp (New) Language Reference" href="../../opensearch.xml"><link rel="stylesheet" href="../../assets/css/styles.f13b59fe.css">
<script src="../../assets/js/runtime~main.02699c25.js" defer="defer"></script>
<script src="../../assets/js/main.4f0a7a76.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="features_variable.html#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="../../../index.html" target="_blank" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="../../img/logo.svg" alt="Lisp Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="../../img/logo.svg" alt="Lisp Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Common Lisp Docs</b></a><a href="../../../docs/tutorial/index.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Tutorial</a><a href="../../index.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Technical Reference</a><a href="../../../docs/whylisp.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Why Lisp?</a><a href="../../../docs/howto.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Guides</a></div><div class="navbar__items navbar__items--right"><a href="../../../docs/contribute.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Contribute!</a><a href="../../../docs/help.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Getting Help</a><a href="../../../docs/about.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">About</a><a href="../../../blog.html" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://github.com/lisp-docs" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0
<!-- -->
<!-- -->
<p><em><span><b><span><i>features</i></span></b></span> Variable</em></p>
<p><strong>Value Type:</strong></p>
<p>a <span><i>proper list</i></span>.</p>
<p><strong>Initial Value:</strong></p>
<p><span><i>implementation-dependent</i></span>.</p>
<p><strong>Description:</strong></p>
<p>The <span><i>value</i></span> of <span><b>*features*</b></span> is called the <span><i>features list</i></span>. It is a <span><i>list</i></span> of <span><i>symbols</i></span>, called <span><i>features</i></span>, that correspond to some aspect of the <span><i>implementation</i></span> or <span><i>environment</i></span>.</p>
<p>Most <span><i>features</i></span> have <span><i>implementation-dependent</i></span> meanings; The following meanings have been assigned to feature names:</p>
<p>:cltl1</p>
<p>If present, indicates that the LISP <em>package purports to conform</em> to the 1984 specification <em>Common Lisp: The Language</em>. It is possible, but not required, for a <span><i>conforming implementation</i></span> to have this feature because this specification specifies that its <span><i>symbols</i></span> are to be in the COMMON-LISP <span><i>package</i></span>, not the LISP package.</p>
<p>:cltl2</p>
<p>If present, indicates that the implementation <span><i>purports to conform</i></span> to <em>Common Lisp: The Language, Second Edition</em>. This feature must not be present in any <span><i>conforming implementation</i></span>, since conformance to that document is not compatible with conformance to this specification. The name, however, is reserved by this specification in order to help programs distinguish implementations which conform to that document from implementations which conform to this specification.</p>
<p>:ieee-floating-point</p>
<p>If present, indicates that the implementation <span><i>purports to conform</i></span> to the requirements of <em>IEEE Standard for Binary Floating-Point Arithmetic</em>.</p>
<p>:x3j13</p>
<p>If present, indicates that the implementation conforms to some particular working draft of this specification, or to some subset of features that approximates a belief about what this specification might turn out to contain. A <span><i>conforming implementation</i></span> might or might not contain such a feature. (This feature is intended primarily as a stopgap in order to provide implementors something to use prior to the availability of a draft standard, in order to</p>
<p>discourage them from introducing the <!-- -->:draft-ansi-cl<!-- --> and <!-- -->:ansi-cl<!-- --> <span><i>features</i></span> prematurely.) <!-- -->:draft-ansi-cl</p>
<p><em><span><b><span><i>features</i></span></b></span></em></p>
<p>If present, indicates that the <em>implementation purports to conform</em> to the first full draft of this specification, which went to public review in 1992. A <span><i>conforming implementation</i></span> which has the <!-- -->:draft-ansi-cl-2<!-- --> or <!-- -->:ansi-cl<!-- --> <span><i>feature</i></span> is not permitted to retain the <!-- -->:draft-ansi-cl<!-- --> <span><i>feature</i></span> since incompatible changes were made subsequent to the first draft.</p>
<p>:draft-ansi-cl-2</p>
<p>If present, indicates that a second full draft of this specification has gone to public review, and that the <em>implementation purports to conform</em> to that specification. (If additional public review drafts are produced, this keyword will continue to refer to the second draft, and additional keywords will be added to identify conformance with such later drafts. As such, the meaning of this keyword can be relied upon not to change over time.) A <span><i>conforming implementation</i></span> which has the <!-- -->:ansi-cl<!-- --> <span><i>feature</i></span> is only permitted to retain the <!-- -->:draft-ansi-cl<!-- --> <span><i>feature</i></span> if the finally approved standard is not incompatible with the draft standard.</p>
<p>:ansi-cl</p>
<p>If present, indicates that this specification has been adopted by ANSI as an official standard, and that the <em>implementation purports to conform</em>.</p>
<p>:common-lisp</p>
<p>This feature must appear in <span><b>*features*</b></span> for any implementation that has one or more of the features <!-- -->:x3j13<!-- -->, <!-- -->:draft-ansi-cl<!-- -->, or <!-- -->:ansi-cl<!-- -->. It is intended that it should also appear in implementations which have the features <!-- -->:cltl1<!-- --> or <!-- -->:cltl2<!-- -->, but this specification cannot force such behavior. The intent is that this feature should identify the language family named “Common Lisp,” rather than some specific dialect within that family.</p>
<p><strong>See Also:</strong></p>
<p>Section 1.5.2.1.1 (Use of Read-Time Conditionals), Section 2.4 (Standard Macro Characters)</p>
<p><strong>Notes:</strong></p>
<p>The <span><i>value</i></span> of <span><b>*features*</b></span> is used by the #+ and #- reader syntax.</p>
<p><span><i>Symbols</i></span> in the <span><i>features list</i></span> may be in any <span><i>package</i></span>, but in practice they are generally in the KEYWORD <span><i>package</i></span>. This is because KEYWORD is the <span><i>package</i></span> used by default when <em>reading</em><sub>2</sub> <span><i>feature expressions</i></span> in the #+ and #- <span><i>reader macros</i></span>. <span><i>Code</i></span> that needs to name a <span><i>feature</i></span><sub>2</sub> in a <em>package P</em> (other than KEYWORD) can do so by making explicit use of a <span><i>package prefix</i></span> for <em>P</em>, but note that such <span><i>code</i></span> must also assure that the <em>package P</em> exists in order for the <span><i>feature expression</i></span> to be <span><i>read</i></span> <sub>2</sub>—even in cases where the <span><i>feature expression</i></span> is expected to fail.</p>
<p>It is generally considered wise for an <span><i>implementation</i></span> to include one or more <span><i>features</i></span> identifying the specific <span><i>implementation</i></span>, so that conditional expressions can be written which distinguish idiosyncrasies of one <span><i>implementation</i></span> from those of another. Since features are normally <span><i>symbols</i></span> in the KEYWORD <span><i>package</i></span> where name collisions might easily result, and since no uniquely defined</p>
<p>System</p>
<p>mechanism is designated for deciding who has the right to use which <span><i>symbol</i></span> for what reason, a conservative strategy is to prefer names derived from ones own company or product name, since those names are often trademarked and are hence less likely to be used unwittingly by another <span><i>implementation</i></span>.</p>
<p><em><span><b><em>compile-file-pathname</em></b></span></em>**,**</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="expanded-reference-features">Expanded Reference: *features*<a href="features_variable.html#expanded-reference-features" class="hash-link" aria-label="Direct link to Expanded Reference: *features*" title="Direct link to Expanded Reference: *features*"></a></h2>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>TODO: Please contribute to this page by adding explanations and examples</p></div></div>
<div class="language-lisp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-lisp codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">*features*</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/lisp-docs/cl-language-reference/tree/main/docs/chap-24/ce-c-dictionary/features_variable.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"><span class="theme-last-updated">Last updated<!-- --> by <b>daninus14</b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="compile-verbose_variable.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">compile-verbose</div></a><a class="pagination-nav__link pagination-nav__link--next" href="load-truename_variable.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">load-truename</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="features_variable.html#expanded-reference-features" class="table-of-contents__link toc-highlight">Expanded Reference: *features*</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a href="../../../docs/tutorial.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Tutorial</a></li><li class="footer__item"><a href="../../index.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Technical Reference</a></li><li class="footer__item"><a href="../../../docs/help.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Help</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/common-lisp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/hhk46CE" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternal
</body>
</html>