452 lines
No EOL
108 KiB
HTML
452 lines
No EOL
108 KiB
HTML
<!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-1/b-e-definitions" data-has-hydrated="false">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="generator" content="Docusaurus v3.0.1">
|
||
<title data-rh="true">1.4 Definitions | 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-1/b-e-definitions"><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="1.4 Definitions | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="1.4.1 Notational Conventions"><meta data-rh="true" property="og:description" content="1.4.1 Notational Conventions"><link data-rh="true" rel="icon" href="../img/favicon.ico"><link data-rh="true" rel="canonical" href="b-e-definitions.html"><link data-rh="true" rel="alternate" href="b-e-definitions.html" hreflang="en"><link data-rh="true" rel="alternate" href="b-e-definitions.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="b-e-definitions.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-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="../index.html">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-0/intro.html">Contents and Figures</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="b-b-scope-purpose-and-history.html">1. Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-b-scope-purpose-and-history.html">1.1 Scope</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-c-organization-of-the-document.html">1.2 Organization of the Document</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-d-referenced-publications.html">1.3 Referenced Publications</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="b-e-definitions.html">1.4 Definitions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-f-conformance.html">1.5 Conformance</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-g-language-extensions.html">1.6 Language Extensions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-h-language-subsets.html">1.7 Language Subsets</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-i-deprecated-language-features.html">1.8 Deprecated Language Features</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="b-j-symbols-in-the-commonlisp-package.html">1.9 Symbols in the COMMON</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-2/c-b-character-syntax.html">2. Syntax</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-3/d-b-evaluation.html">3. Evaluation and Compilation</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-4/e-b-introduction.html">4. Types and Classes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-5/f-b-generalized-reference.html">5. Data and Control Flow</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-6/g-b-the-loop-facility.html">6. Iteration</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-7/h-b-object-creation-and-initialization.html">7. Objects</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../category/81-structures-dictionary.html">8. Structures</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-9/j-b-condition-system-concepts.html">9. Conditions</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-10/ba-b-symbol-concepts.html">10. Symbols</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-11/bb-b-package-concepts.html">11. Packages</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-12/bc-b-number-concepts.html">12. Numbers</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-13/bd-b-character-concepts.html">13. Characters</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-14/be-b-cons-concepts.html">14. Conses</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-15/bf-b-array-concepts.html">15. Arrays</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-16/bg-b-string-concepts.html">16. Strings</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-17/bh-b-sequence-concepts.html">17. Sequences</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-18/bi-b-hash-table-concepts.html">18. Hash Tables</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-19/bj-b-overview-of-filenames.html">19. Filenames</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-20/ca-b-file-system-concepts.html">20. Files</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-21/cb-b-stream-concepts.html">21. Streams</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-22/cc-b-the-lisp-printer.html">22. Printer</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-23/cd-b-reader-concepts.html">23. Reader</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-24/ce-b-system-construction-concepts.html">24. System Construction</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-25/cf-b-the-external-environment.html">25. External Environment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../environments.html">26. Environments</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../meta-object-protocol.html">27. Meta Object Protocol</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../data-structures.html">28. Data Structures</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../portability/trivial-packages.html">29. Portability</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="../dictionary-entries.html">dictionary-entries</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-26/intro.html">Glossary</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="../index.html"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">1. Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">1.4 Definitions</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>1.4 Definitions</h1>
|
||
<!-- -->
|
||
<p>This section contains notational conventions and definitions of terms used in this manual.</p>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="141-notational-conventions">1.4.1 Notational Conventions<a href="b-e-definitions.html#141-notational-conventions" class="hash-link" aria-label="Direct link to 1.4.1 Notational Conventions" title="Direct link to 1.4.1 Notational Conventions"></a></h2>
|
||
<!-- -->
|
||
<p>The following notational conventions are used throughout this document.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1411-font-key">1.4.1.1 Font Key<a href="b-e-definitions.html#1411-font-key" class="hash-link" aria-label="Direct link to 1.4.1.1 Font Key" title="Direct link to 1.4.1.1 Font Key"></a></h3>
|
||
<!-- -->
|
||
<p>Fonts are used in this document to convey information.</p>
|
||
<span><i>name</i></span>
|
||
<p>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>Sometimes a glossary term appears subscripted, as in “<span><i>whitespace</i></span><sub>2</sub>.” 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>
|
||
<span><i>name</i></span>
|
||
<p>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 “<span><i>name</i></span>,” but the hope is that making such uses conspicuous will save the reader a trip to the glossary in some cases.</p>
|
||
<p><strong>name</strong></p>
|
||
<p>Denotes a symbol in the COMMON-LISP <span><i>package</i></span>. For information about <span><i>case</i></span> conventions, see Section 1.4.1.4.1 (Case in Symbols).</p>
|
||
<p>name</p>
|
||
<p>Denotes a sample <span><i>name</i></span> or piece of <span><i>code</i></span> that a programmer might write in Common Lisp.</p>
|
||
<p>This font is also used for certain <span><i>standardized</i></span> names that are not names of <span><i>external symbols</i></span> of the COMMON-LISP <span><i>package</i></span>, such as <span><i>keywords</i></span><sub>1</sub>, <em>package names</em>, and <span><i>loop keywords</i></span>.</p>
|
||
<span><i>name</i></span>
|
||
<p>Denotes the name of a <span><i>parameter</i></span> or <span><i>value</i></span>.</p>
|
||
<p>In some situations the notation “⟨name⟩” (<em>i.e.</em>, 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>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1412-modified-bnf-syntax">1.4.1.2 Modified BNF Syntax<a href="b-e-definitions.html#1412-modified-bnf-syntax" class="hash-link" aria-label="Direct link to 1.4.1.2 Modified BNF Syntax" title="Direct link to 1.4.1.2 Modified BNF Syntax"></a></h3>
|
||
<!-- -->
|
||
<p>This specification uses an extended Backus Normal Form (BNF) to describe the syntax of Common Lisp <span><i>macro forms</i></span> and <span><i>special forms</i></span>. This section discusses the syntax of BNF expressions.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14121-splicing-in-modified-bnf-syntax">1.4.1.2.1 Splicing in Modified BNF Syntax<a href="b-e-definitions.html#14121-splicing-in-modified-bnf-syntax" class="hash-link" aria-label="Direct link to 1.4.1.2.1 Splicing in Modified BNF Syntax" title="Direct link to 1.4.1.2.1 Splicing in Modified BNF Syntax"></a></h4>
|
||
<!-- -->
|
||
<p>The primary extension used is the following:</p>
|
||
<p>[[ <em>O</em> ]]</p>
|
||
<p>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 <em>O</em> represents a description of the syntax of some number of syntactic elements to be spliced; that description must be of the form</p>
|
||
<i>O</i>
|
||
<sub>1</sub>
|
||
<i>| . . . | O<sub>l</sub></i>
|
||
<p>where each <i>O<sub>i</sub></i> can be of the form <i>S</i> or of the form <i>S</i>* or of the form <i>S</i><sup>1</sup>. The expression [[ <i>O</i> ]] means that a list of the form</p>
|
||
<p>(<i>O<sub>i</sub></i>1<i>. . . O<sub>ij</sub></i>) 1 <i>≤ j</i></p>
|
||
<p>is spliced into the enclosing expression, such that if <i>n 6</i>= <i>m</i> and 1 <i>≤ n, m ≤ j</i>, then either <i>O<sub>in</sub>6</i>= <i>O<sub>im</sub></i> or <i>O<sub>in</sub></i> = <i>O<sub>im</sub></i> = <i>Q<sub>k</sub></i>, where for some 1 <i>≤ k ≤ n</i>, <i>O<sub>k</sub></i> is of the form <i>Q<sub>k</sub></i>*. Furthermore, for each <i>O<sub>in</sub></i> that is of the form <i>Q<sub>k</sub></i><sup>1</sup>, that element is required to appear somewhere in the list to be spliced.</p>
|
||
<p>For example, the expression</p>
|
||
<p>(x [[ A | B* | C ]] y)</p>
|
||
<p>means that at most one A, any number of B’s, and at most one C can occur in any order. It is a description of any of these:</p>
|
||
<p>(x y)</p>
|
||
<p>(x B A C y)</p>
|
||
<p>(x A B B B B B C y)</p>
|
||
<p>(x C B A B B B y)</p>
|
||
<p>but not any of these:</p>
|
||
<p>(x B B A A C C y)</p>
|
||
<p>(x C B C y)</p>
|
||
<p>In the first case, both A and C appear too often, and in the second case C appears too often.</p>
|
||
<p>The notation [[ <em>O</em><sub>1</sub> <em>| O</em><sub>2</sub> <em>| . . .</em> ]]<sup>+</sup>adds the additional restriction that at least one item from among the possible choices must be used. For example:</p>
|
||
<p>(x [[ A | B* | C ]]<sup>+</sup>y)</p>
|
||
<p>means that at most one A, any number of B’s, and at most one C 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>
|
||
<p>(x B y)</p>
|
||
<p>(x B A C y)</p>
|
||
<p>(x A B B B B B C y)</p>
|
||
<p>(x C B A B B B y)</p>
|
||
<p>but not any of these:</p>
|
||
<p>(x y)</p>
|
||
<p>(x B B A A C C y)</p>
|
||
<p>(x C B C y)</p>
|
||
<p>In the first case, no item was used; in the second case, both A and C appear too often; and in the third case C appears too often.</p>
|
||
<p>Also, the expression:</p>
|
||
<p>(x [[ A<sup>1</sup>| B<sup>1</sup>| C ]] y)</p>
|
||
<p>can generate exactly these and no others:</p>
|
||
<p>(x A B C y)</p>
|
||
<p>(x A C B y)</p>
|
||
<p>(x A B y)</p>
|
||
<p>(x B A C y)</p>
|
||
<p>(x B C A y)</p>
|
||
<p>(x B A y)</p>
|
||
<p>(x C A B y)</p>
|
||
<p>(x C B A y)</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14122-indirection-in-modified-bnf-syntax">1.4.1.2.2 Indirection in Modified BNF Syntax<a href="b-e-definitions.html#14122-indirection-in-modified-bnf-syntax" class="hash-link" aria-label="Direct link to 1.4.1.2.2 Indirection in Modified BNF Syntax" title="Direct link to 1.4.1.2.2 Indirection in Modified BNF Syntax"></a></h4>
|
||
<!-- -->
|
||
<p>An indirection extension is introduced in order to make this new syntax more readable: <em>↓O</em></p>
|
||
<p>If <em>O</em> is a non-terminal symbol, the right-hand side of its definition is substituted for the entire expression <em>↓O</em>. For example, the following BNF is equivalent to the BNF in the previous example:</p>
|
||
<p>(x [[ <em>↓O</em> ]] y)</p>
|
||
<p><em>O::</em>=A <em>|</em> B* <em>|</em> C</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14123-additional-uses-for-indirect-definitions-in-modified-bnf-syntax">1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax<a href="b-e-definitions.html#14123-additional-uses-for-indirect-definitions-in-modified-bnf-syntax" class="hash-link" aria-label="Direct link to 1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax" title="Direct link to 1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax"></a></h4>
|
||
<!-- -->
|
||
<p>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><span><b>case</b></span> <em>keyform {↓normal-clause}</em>* [<em>↓otherwise-clause</em>] → {result}*</p>
|
||
<p><span><b>ccase</b></span> <em>keyplace {↓normal-clause}</em>* → {result}*</p>
|
||
<p><span><b>ecase</b></span> <em>keyform {↓normal-clause}</em>* → {result}*</p>
|
||
<p><em>normal-clause::</em>=(<em>keys {form}</em>*)</p>
|
||
<p><em>otherwise-clause::</em>=(<em>{otherwise | t} {form}</em>*)</p>
|
||
<p><em>clause::</em>=<em>normal-clause | otherwise-clause</em></p>
|
||
<p>Here the term “<em>clause</em>” 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 “<em>clause</em>” might appear in text that follows, as shorthand for “<em>normal-clause</em> or <em>otherwise-clause</em>.”</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1413-special-symbols">1.4.1.3 Special Symbols<a href="b-e-definitions.html#1413-special-symbols" class="hash-link" aria-label="Direct link to 1.4.1.3 Special Symbols" title="Direct link to 1.4.1.3 Special Symbols"></a></h3>
|
||
<!-- -->
|
||
<p>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>
|
||
<p>→</p>
|
||
<p>This indicates evaluation. For example:</p>
|
||
<p>(+ 4 5) → 9</p>
|
||
<p>This means that the result of evaluating the <span><i>form</i></span> (+ 4 5) is 9.</p>
|
||
<p>If a <span><i>form</i></span> returns <span><i>multiple values</i></span>, those values might be shown separated by spaces, line breaks, or commas. For example:</p>
|
||
<p>(truncate 7 5)</p>
|
||
<p>→ 1 2</p>
|
||
<p>(truncate 7 5)</p>
|
||
<p>→ 1</p>
|
||
<p>2</p>
|
||
<p>(truncate 7 5)</p>
|
||
<p>→ 1, 2</p>
|
||
<p>Each of the above three examples is equivalent, and specifies that (truncate 7 5) returns two values, which are 1 and 2.</p>
|
||
<p>Some <span><i>conforming implementations</i></span> actually type an arrow (or some other indicator) before showing return values, while others do not.</p>
|
||
<i><sup>or</sup>→</i>
|
||
<p>The notation “ <i><sup>or</sup>→</i>” is used to denote one of several possible alternate results. The example</p>
|
||
<p>(char-name #\a)</p>
|
||
<p>→ NIL</p>
|
||
<p><i><sup>or</sup>→</i> "LOWERCASE-a"</p>
|
||
<p><i><sup>or</sup>→</i> "Small-A"</p>
|
||
<p><i><sup>or</sup>→</i> "LA01"</p>
|
||
<p>indicates that <span><b>nil</b></span>, "LOWERCASE-a", "Small-A", "LA01" are among the possible results of (char-name #\a)—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>
|
||
<p>(char-name #\a) → implementation-dependent</p>
|
||
<p>but it is intended to provide additional information to illustrate some of the ways in which it is permitted for implementations to diverge.</p>
|
||
<i><sup>not</sup> →</i>
|
||
<p>The notation “<i><sup>not</sup> →</i>” 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>
|
||
<p>(function-lambda-expression</p>
|
||
<p>(funcall #’(lambda (x) #’(lambda () x)) nil))</p>
|
||
<p>→ NIL, <span><i>true</i></span>, NIL</p>
|
||
<p><i><sup>or</sup>→</i> (LAMBDA () X), <i>true</i>, NIL</p>
|
||
<p><i><sup>not</sup> →</i> NIL, <i>false</i>, NIL</p>
|
||
<p><i><sup>not</sup> →</i> (LAMBDA () X), <i>false</i>, NIL</p>
|
||
<p><em>≡</em></p>
|
||
<p>This indicates code equivalence. For example:</p>
|
||
<p>(gcd x (gcd y z)) <em>≡</em> (gcd (gcd x y) z)</p>
|
||
<p>This means that the results and observable side-effects of evaluating the <span><i>form</i></span></p>
|
||
<p>(gcd x (gcd y z)) are always the same as the results and observable side-effects of (gcd (gcd x y) z) for any x, y, and z.</p>
|
||
<p>▷</p>
|
||
<p>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 <span><i>implementation-defined</i></span>.</p>
|
||
<p>For example, <span><i>conforming implementations</i></span> are permitted to differ in issues of how interactive input is terminated. For example, the <span><i>function</i></span> <span><b>read</b></span> terminates when the final delimiter is typed on a non-interactive stream. In some <span><i>implementations</i></span>, an interactive call to <span><b>read</b></span> returns as soon as the final delimiter is typed, even if that delimiter is not a <span><i>newline</i></span>. In other <span><i>implementations</i></span>, a final <span><i>newline</i></span> is always required. In still other <span><i>implementations</i></span>, 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>In the examples in this document, the notation “▷” precedes lines where interactive input and output occurs. Within such a scenario, “this notation” notates user input.</p>
|
||
<p>For example, the notation</p>
|
||
<p>(+ 1 (print (+ (sqrt (read)) (sqrt (read)))))</p>
|
||
<p>▷ 9 16</p>
|
||
<p>▷ 7</p>
|
||
<p>→ 8</p>
|
||
<p>shows an interaction in which “(+ 1 (print (+ (sqrt (read)) (sqrt (read)))))” is a <span><i>form</i></span> to be <em>evaluated</em>, “9 16 ” is interactive input, “7” is interactive output, and “8” is the <em>value yielded</em> from the <span><i>evaluation</i></span>.</p>
|
||
<p>The use of this notation is intended to disguise small differences in interactive input and output behavior between <span><i>implementations</i></span>.</p>
|
||
<p>Sometimes, the non-interactive stream model calls for a <span><i>newline</i></span>. How that <span><i>newline</i></span> character is interactively entered is an <span><i>implementation-defined</i></span> detail of the user interface, but in that case, either the notation “<span><i>⟨Newline⟩</i></span>” or “←” might be used.</p>
|
||
<p>(progn (format t "~&Who? ") (read-line))</p>
|
||
<p>▷ Who? Fred, Mary, and Sally←</p>
|
||
<p>→ "Fred, Mary, and Sally", <em>~~fal~~se</em></p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1414-objects-with-multiple-notations">1.4.1.4 Objects with Multiple Notations<a href="b-e-definitions.html#1414-objects-with-multiple-notations" class="hash-link" aria-label="Direct link to 1.4.1.4 Objects with Multiple Notations" title="Direct link to 1.4.1.4 Objects with Multiple Notations"></a></h3>
|
||
<!-- -->
|
||
<p>Some <span><i>objects</i></span> 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>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14141-case-in-symbols">1.4.1.4.1 Case in Symbols<a href="b-e-definitions.html#14141-case-in-symbols" class="hash-link" aria-label="Direct link to 1.4.1.4.1 Case in Symbols" title="Direct link to 1.4.1.4.1 Case in Symbols"></a></h4>
|
||
<!-- -->
|
||
<p>While <span><i>case</i></span> is significant in the process of <em>interning</em> a <span><i>symbol</i></span>, the <em>Lisp reader</em> , by default, attempts to canonicalize the case of a <span><i>symbol</i></span> prior to interning; see Section 23.1.2 (Effect of Readtable Case on the Lisp Reader). As such, case in <span><i>symbols</i></span> is not, by default, significant. Throughout</p>
|
||
<p>this document, except as explicitly noted otherwise, the case in which a <span><i>symbol</i></span> appears is not significant; that is, HELLO, Hello, hElLo, and hello are all equivalent ways to denote a symbol whose name is "HELLO".</p>
|
||
<p>The characters <span><i>backslash</i></span> and <span><i>vertical-bar</i></span> are used to explicitly quote the <span><i>case</i></span> and other parsing related aspects of characters. As such, the notations |hello| and \h\e\l\l\o are equivalent ways to refer to a symbol whose name is "hello", and which is <span><i>distinct</i></span> from any symbol whose name is "HELLO".</p>
|
||
<p>The <span><i>symbols</i></span> that correspond to Common Lisp <span><i>defined names</i></span> have <span><i>uppercase</i></span> names even though their names generally appear in <span><i>lowercase</i></span> in this document.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14142-numbers">1.4.1.4.2 Numbers<a href="b-e-definitions.html#14142-numbers" class="hash-link" aria-label="Direct link to 1.4.1.4.2 Numbers" title="Direct link to 1.4.1.4.2 Numbers"></a></h4>
|
||
<!-- -->
|
||
<p>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>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14143-use-of-the-dot-character">1.4.1.4.3 Use of the Dot Character<a href="b-e-definitions.html#14143-use-of-the-dot-character" class="hash-link" aria-label="Direct link to 1.4.1.4.3 Use of the Dot Character" title="Direct link to 1.4.1.4.3 Use of the Dot Character"></a></h4>
|
||
<!-- -->
|
||
<p>The dot appearing by itself in an <span><i>expression</i></span> such as</p>
|
||
<p>(<em>item1 item2</em> . <span><i>tail</i></span>)</p>
|
||
<p>means that <span><i>tail</i></span> represents a <span><i>list</i></span> of <span><i>objects</i></span> at the end of a list. For example,</p>
|
||
<p>(A B C . (D E F))</p>
|
||
<p>is notationally equivalent to:</p>
|
||
<p>(A B C D E F)</p>
|
||
<p>Although <span><i>dot</i></span> is a valid constituent character in a symbol, no <em>standardized symbols</em> contain the character <span><i>dot</i></span>, so a period that follows a reference to a <span><i>symbol</i></span> at the end of a sentence in this document should always be interpreted as a period and never as part of the <span><i>symbol</i></span>’s <span><i>name</i></span>. For example, within this document, a sentence such as “This sample sentence refers to the symbol <span><b>car</b></span>.” refers to a symbol whose name is "CAR" (with three letters), and never to a four-letter symbol "CAR."</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14144-nil">1.4.1.4.4 NIL<a href="b-e-definitions.html#14144-nil" class="hash-link" aria-label="Direct link to 1.4.1.4.4 NIL" title="Direct link to 1.4.1.4.4 NIL"></a></h4>
|
||
<!-- -->
|
||
<p><span><b>nil</b></span> has a variety of meanings. It is a <span><i>symbol</i></span> in the COMMON-LISP <span><i>package</i></span> with the <span><i>name</i></span> "NIL", it is <span><i>boolean</i></span> (and <span><i>generalized boolean</i></span>) <span><i>false</i></span>, it is the <span><i>empty list</i></span>, and it is the <span><i>name</i></span> of the <span><i>empty type</i></span> (a <span><i>subtype</i></span> of all <span><i>types</i></span>).</p>
|
||
<p>Within Common Lisp, <span><b>nil</b></span> can be notated interchangeably as either NIL or (). By convention, the choice of notation offers a hint as to which of its many roles it is playing.</p>
|
||
<p>|<strong>For Evaluation? Notation Typically Implied Role</strong>|</p>
|
||
<p>| :- |</p>
|
||
<p>|</p><p>Yes nil use as a <span><i>boolean</i></span>. </p><p>Yes ’nil use as a <span><i>symbol</i></span>. </p><p>Yes ’() use as an <span><i>empty list</i></span> </p><p>No nil use as a <span><i>symbol</i></span> or <span><i>boolean</i></span>. No () use as an <span><i>empty list</i></span>.</p>|<p></p>
|
||
<p><strong>Figure 1–1. Notations for NIL</strong></p>
|
||
<p>Within this document only, <span><b>nil</b></span> is also sometimes notated as <span><i>false</i></span> to emphasize its role as a <span><i>boolean</i></span>. For example:</p>
|
||
<p>(print ()) ;avoided</p>
|
||
<p>(defun three nil 3) ;avoided</p>
|
||
<p>’(nil nil) ;list of two symbols</p>
|
||
<p>’(() ()) ;list of empty lists</p>
|
||
<p>(defun three () 3) ;Emphasize empty parameter list.</p>
|
||
<p>(append ’() ’()) → () ;Emphasize use of empty lists</p>
|
||
<p>(not nil) → true ;Emphasize use as Boolean false</p>
|
||
<p>(get ’nil ’color) ;Emphasize use as a symbol</p>
|
||
<p>A <span><i>function</i></span> is sometimes said to “be <span><i>false</i></span>” or “be <span><i>true</i></span>” in some circumstance. Since no <span><i>function</i></span> object can be the same as <span><b>nil</b></span> and all <em>function objects</em> represent <span><i>true</i></span> when viewed as <span><i>booleans</i></span>, it would be meaningless to say that the <span><i>function</i></span> was literally <span><i>false</i></span> and uninteresting to say that it was literally <span><i>true</i></span>. Instead, these phrases are just traditional alternative ways of saying that the</p>
|
||
<p><span><i>function</i></span> “returns <span><i>false</i></span>” or “returns <span><i>true</i></span>,” respectively.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1415-designators">1.4.1.5 Designators<a href="b-e-definitions.html#1415-designators" class="hash-link" aria-label="Direct link to 1.4.1.5 Designators" title="Direct link to 1.4.1.5 Designators"></a></h3>
|
||
<!-- -->
|
||
<p>A <span><i>designator</i></span> is an <span><i>object</i></span> that denotes another <span><i>object</i></span>.</p>
|
||
<p>Where a <span><i>parameter</i></span> of an <span><i>operator</i></span> is described as a <span><i>designator</i></span> , the description of the <span><i>operator</i></span> is written in a way that assumes that the value of the <span><i>parameter</i></span> is the denoted <span><i>object</i></span>; that is, that the <span><i>parameter</i></span> is already of the denoted <span><i>type</i></span>. (The specific nature of the <span><i>object</i></span> denoted by a “⟨typeii designator*” or a “<span><i>designator</i></span> for a ⟨type⟩” can be found in the Glossary entry for “⟨typeii designator* .”)</p>
|
||
<p>For example, “<span><b>nil</b></span>” and “the <span><i>value</i></span> of <strong>*standard-output*</strong>” are operationally indistinguishable as <span><i>stream designators</i></span>. Similarly, the <span><i>symbol</i></span> foo and the <span><i>string</i></span> "FOO" are operationally indistinguishable as <span><i>string designators</i></span>.</p>
|
||
<p>Except as otherwise noted, in a situation where the denoted <span><i>object</i></span> might be used multiple times, it is <span><i>implementation-dependent</i></span> whether the <span><i>object</i></span> is coerced only once or whether the coercion occurs each time the <span><i>object</i></span> must be used.</p>
|
||
<p>For example, <span><b>mapcar</b></span> receives a <span><i>function designator</i></span> as an argument, and its description is written as if this were simply a function. In fact, it is <span><i>implementation-dependent</i></span> whether the <span><i>function designator</i></span> is coerced right away or whether it is carried around internally in the form that it was given as an <span><i>argument</i></span> and re-coerced each time it is needed. In most cases, <span><i>conforming programs</i></span> 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 <span><i>conforming program</i></span>, but might or might not have portably correct results, depending on whether its correctness depends on one or the other of the results:</p>
|
||
<p>(defun add-some (x)</p>
|
||
<p>(defun add-some (x) (+ x 2))</p>
|
||
<p>(+ x 1)) → ADD-SOME</p>
|
||
<p>(mapcar ’add-some ’(1 2 3 4))</p>
|
||
<p>→ (2 3 4 5)</p>
|
||
<p><i><sup>or</sup>→</i> (2 4 5 6)</p>
|
||
<p>In a few rare situations, there may be a need in a dictionary entry to refer to the <span><i>object</i></span> that was the original <span><i>designator</i></span> for a <span><i>parameter</i></span> . Since naming the <span><i>parameter</i></span> would refer to the denoted <span><i>object</i></span>, the phrase “the ⟨parameter-nameii designator*” can be used to refer to the <span><i>designator</i></span> which was the <span><i>argument</i></span> from which the <span><i>value</i></span> of ⟨parameter-name⟩ was computed.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1416-nonsense-words">1.4.1.6 Nonsense Words<a href="b-e-definitions.html#1416-nonsense-words" class="hash-link" aria-label="Direct link to 1.4.1.6 Nonsense Words" title="Direct link to 1.4.1.6 Nonsense Words"></a></h3>
|
||
<!-- -->
|
||
<p>When a word having no pre-attached semantics is required (<em>e.g.</em>, 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>
|
||
<p>(defun foo (x) (+ x 1))</p>
|
||
<p>the use of the name foo is just a shorthand way of saying “please substitute your favorite name here.”</p>
|
||
<p>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>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="142-error-terminology">1.4.2 Error Terminology<a href="b-e-definitions.html#142-error-terminology" class="hash-link" aria-label="Direct link to 1.4.2 Error Terminology" title="Direct link to 1.4.2 Error Terminology"></a></h2>
|
||
<!-- -->
|
||
<p>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>
|
||
<p><strong>Safe code</strong></p>
|
||
<p>This is <span><i>code</i></span> processed with the <strong>safety</strong> optimization at its highest setting (3). <strong>safety</strong> is a lexical property of code. The phrase “the function F should signal an error” means that if F is invoked from code processed with the highest <strong>safety</strong> optimization, an error is signaled. It is <span><i>implementation-dependent</i></span> whether F or the calling code signals the error.</p>
|
||
<p><strong>Unsafe code</strong></p>
|
||
<p>This is code processed with lower safety levels.</p>
|
||
<p>Unsafe code might do error checking. Implementations are permitted to treat all code as safe code all the time.</p>
|
||
<p><strong>An error is signaled</strong></p>
|
||
<p>This means that an error is signaled in both safe and unsafe code. <span><i>Conforming code</i></span> 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 <span><b>unexport</b></span> is given a <span><i>symbol</i></span> not <span><i>accessible</i></span> in the <span><i>current package</i></span>.”</p>
|
||
<p>If an explicit error type is not specified, the default is <span><b>error</b></span>.</p>
|
||
<p><strong>An error should be signaled</strong></p>
|
||
<p>This means that an error is signaled in safe code, and an error might be signaled in unsafe code. <span><i>Conforming code</i></span> 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, “<span><b>+</b></span> should signal an error of <span><i>type</i></span> <span><b>type-error</b></span> if any argument is not of <span><i>type</i></span> <span><b>number</b></span>.”</p>
|
||
<p><strong>Should be prepared to signal an error</strong></p>
|
||
<p>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 <span><i>operator</i></span> to discover an erroneous situation if the normal action of that <span><i>operator</i></span> can be performed successfully with only ‘lazy’ checking. An <span><i>implementation</i></span> is always permitted to signal an error, but even in <em>safe code</em>, it is only required to signal the error when failing to signal it might lead to incorrect results. In <em>unsafe code</em>, the consequences are undefined.</p>
|
||
<p>For example, defining that “<span><b>find</b></span> should be prepared to signal an error of <span><i>type</i></span> <span><b>type-error</b></span> if its second <span><i>argument</i></span> is not a <span><i>proper list</i></span>” does not imply that an error is always signaled. The <span><i>form</i></span></p>
|
||
<p>(find ’a ’(a b . c))</p>
|
||
<p>must either signal an error of <span><i>type</i></span> <span><b>type-error</b></span> in <em>safe code</em>, else return A. In <em>unsafe code</em>, the consequences are undefined. By contrast,</p>
|
||
<p>(find ’d ’(a b . c))</p>
|
||
<p>must signal an error of <span><i>type</i></span> <span><b>type-error</b></span> in <em>safe code</em>. In <em>unsafe code</em>, the consequences are undefined. Also,</p>
|
||
<p>(find ’d ’#1=(a b . #1#))</p>
|
||
<p>in <em>safe code</em> might return <span><b>nil</b></span> (as an <span><i>implementation-defined</i></span> extension), might never return, or might signal an error of <span><i>type</i></span> <span><b>type-error</b></span>. In <em>unsafe code</em>, the consequences are undefined.</p>
|
||
<p>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 <span><i>operator</i></span> .</p>
|
||
<p><strong>The consequences are unspecified</strong></p>
|
||
<p>This means that the consequences are unpredictable but harmless. Implementations are permitted to specify the consequences of this situation. No <span><i>conforming code</i></span> may depend on the results or effects of this situation, and all <span><i>conforming code</i></span> is required to treat the</p>
|
||
<p>results and effects of this situation as unpredictable but harmless. For example, “if the second argument to <span><b>shared-initialize</b></span> specifies a name that does not correspond to any <em>slots accessible</em> in the <span><i>object</i></span>, the results are unspecified.”</p>
|
||
<p><strong>The consequences are undefined</strong></p>
|
||
<p>This means that the consequences are unpredictable. The consequences may range from harmless to fatal. No <span><i>conforming code</i></span> may depend on the results or effects. <span><i>Conforming code</i></span> 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>For example: “Once a name has been declared by <span><b>defconstant</b></span> to be constant, any further assignment or binding of that variable has undefined consequences.”</p>
|
||
<p><strong>An error might be signaled</strong></p>
|
||
<p>This means that the situation has undefined consequences; however, if an error is signaled, it is of the specified <span><i>type</i></span>. For example, “<span><b>open</b></span> might signal an error of <span><i>type</i></span> <span><b>file-error</b></span>.”</p>
|
||
<p><strong>The return values are unspecified</strong></p>
|
||
<p>This means that only the number and nature of the return values of a <span><i>form</i></span> are not specified. However, the issue of whether or not any side-effects or transfer of control occurs is still well-specified.</p>
|
||
<p>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 F are unspecified, an expression such as (length (list (F))) is still well-specified because it does not rely on any particular aspect of the value or values returned by F.</p>
|
||
<p><strong>Implementations may be extended to cover this situation</strong></p>
|
||
<p>This means that the <span><i>situation</i></span> has undefined consequences; however, a <em>conforming</em></p>
|
||
<p><span><i>implementation</i></span> is free to treat the situation in a more specific way. For example, an <span><i>implementation</i></span> 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>No <span><i>conforming code</i></span> may depend on the consequences of such a <span><i>situation</i></span>; all <span><i>conforming code</i></span> must treat the consequences of the situation as undefined. <span><i>Implementations</i></span> are required to document how the situation is treated.</p>
|
||
<p>For example, “implementations may be extended to define other type specifiers to have a corresponding <span><i>class</i></span>.”</p>
|
||
<p><strong>Implementations are free to extend the syntax</strong></p>
|
||
<p>This means that in this situation implementations are permitted to define unambiguous extensions to the syntax of the <span><i>form</i></span> being described. No <span><i>conforming code</i></span> may depend on this extension. Implementations are required to document each such extension. All</p>
|
||
<p><span><i>conforming code</i></span> 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 <span><b>defclass</b></span>.”</p>
|
||
<p>A warning might be issued</p>
|
||
<!-- -->
|
||
<p>This means that <span><i>implementations</i></span> are encouraged to issue a warning if the context is appropriate (<em>e.g.</em>, when compiling). However, a <span><i>conforming implementation</i></span> is not required to issue a warning.</p>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="143-sections-not-formally-part-of-this-standard">1.4.3 Sections Not Formally Part Of This Standard<a href="b-e-definitions.html#143-sections-not-formally-part-of-this-standard" class="hash-link" aria-label="Direct link to 1.4.3 Sections Not Formally Part Of This Standard" title="Direct link to 1.4.3 Sections Not Formally Part Of This Standard"></a></h2>
|
||
<!-- -->
|
||
<p>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>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>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>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>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>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="144-interpreting-dictionary-entries">1.4.4 Interpreting Dictionary Entries<a href="b-e-definitions.html#144-interpreting-dictionary-entries" class="hash-link" aria-label="Direct link to 1.4.4 Interpreting Dictionary Entries" title="Direct link to 1.4.4 Interpreting Dictionary Entries"></a></h2>
|
||
<!-- -->
|
||
<p>The dictionary entry for each <span><i>defined name</i></span> 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>This section defines the significance of each potential section in a dictionary entry.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1441-the-affected-by-section-of-a-dictionary-entry">1.4.4.1 The “Affected By” Section of a Dictionary Entry<a href="b-e-definitions.html#1441-the-affected-by-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.1 The “Affected By” Section of a Dictionary Entry" title="Direct link to 1.4.4.1 The “Affected By” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>For an <span><i>operator</i></span> , anything that can affect the side effects of or <span><i>values</i></span> returned by the <span><i>operator</i></span> .</p>
|
||
<p>For a <span><i>variable</i></span>, anything that can affect the <span><i>value</i></span> of the <span><i>variable</i></span> including <span><i>functions</i></span> that bind or assign it.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1442-the-arguments-section-of-a-dictionary-entry">1.4.4.2 The “Arguments” Section of a Dictionary Entry<a href="b-e-definitions.html#1442-the-arguments-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.2 The “Arguments” Section of a Dictionary Entry" title="Direct link to 1.4.4.2 The “Arguments” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information describes the syntax information of entries such as those for <span><i>declarations</i></span> and special <span><i>expressions</i></span> which are never <em>evaluated</em> as <span><i>forms</i></span>, and so do not return <span><i>values</i></span>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1443-the-arguments-and-values-section-of-a-dictionary-entry">1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry<a href="b-e-definitions.html#1443-the-arguments-and-values-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry" title="Direct link to 1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>An English language description of what <span><i>arguments</i></span> the <span><i>operator</i></span> accepts and what <span><i>values</i></span> it returns, including information about defaults for <span><i>parameters</i></span> corresponding to omittable <span><i>arguments</i></span> (such as <span><i>optional parameters</i></span> and <span><i>keyword parameters</i></span>). For <span><i>special operators</i></span> and <span><i>macros</i></span>, their <span><i>arguments</i></span> are not <em>evaluated</em> unless it is explicitly stated in their descriptions that they are <em>evaluated</em>.</p>
|
||
<p>Except as explicitly specified otherwise, the consequences are undefined if these type restrictions are violated.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1444-the-binding-types-affected-section-of-a-dictionary-entry">1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry<a href="b-e-definitions.html#1444-the-binding-types-affected-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry" title="Direct link to 1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information alerts the reader to the kinds of <span><i>bindings</i></span> that might potentially be affected by a declaration. Whether in fact any particular such <span><i>binding</i></span> is actually affected is dependent on additional factors as well. See the “Description” section of the declaration in question for details.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1445-the-class-precedence-list-section-of-a-dictionary-entry">1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry<a href="b-e-definitions.html#1445-the-class-precedence-list-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry" title="Direct link to 1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This appears in the dictionary entry for a <span><i>class</i></span>, and contains an ordered list of the <em>classes</em> defined by Common Lisp that must be in the <span><i>class precedence list</i></span> of this <span><i>class</i></span>.</p>
|
||
<p>It is permissible for other (<span><i>implementation-defined</i></span>) <em>classes</em> to appear in the <span><i>implementation</i></span>’s <span><i>class precedence list</i></span> for the <span><i>class</i></span>.</p>
|
||
<p>It is permissible for either <span><b>standard-object</b></span> or <span><b>structure-object</b></span> to appear in the <span><i>implementation</i></span>’s <span><i>class precedence list</i></span>; for details, see Section 4.2.2 (Type Relationships).</p>
|
||
<p>Except as explicitly indicated otherwise somewhere in this specification, no additional <em>standardized classes</em> may appear in the <span><i>implementation</i></span>’s <span><i>class precedence list</i></span>.</p>
|
||
<p>By definition of the relationship between <em>classes</em> and <span><i>types</i></span>, the <em>classes</em> listed in this section are also <span><i>supertypes</i></span> of the <span><i>type</i></span> denoted by the <span><i>class</i></span>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1446-dictionary-entries-for-type-specifiers">1.4.4.6 Dictionary Entries for Type Specifiers<a href="b-e-definitions.html#1446-dictionary-entries-for-type-specifiers" class="hash-link" aria-label="Direct link to 1.4.4.6 Dictionary Entries for Type Specifiers" title="Direct link to 1.4.4.6 Dictionary Entries for Type Specifiers"></a></h3>
|
||
<!-- -->
|
||
<p>The <span><i>atomic type specifiers</i></span> are those <span><i>defined names</i></span> 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 <span><i>symbol</i></span> naming one of these <span><i>types</i></span> or <em>classes</em> as an <span><i>atomic type specifier</i></span> is found in the “Description” section of such dictionary entries.</p>
|
||
<p>The <span><i>compound type specifiers</i></span> are those <span><i>defined names</i></span> 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 <span><i>compound type specifier</i></span> a <span><i>list</i></span> whose <span><i>car</i></span> is such a <span><i>symbol</i></span> 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>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14461-the-compound-type-specifier-kind-section-of-a-dictionary-entry">1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry<a href="b-e-definitions.html#14461-the-compound-type-specifier-kind-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry" title="Direct link to 1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry"></a></h4>
|
||
<!-- -->
|
||
<p>An “abbreviating” <span><i>type specifier</i></span> is one that describes a <span><i>subtype</i></span> for which it is in principle possible to enumerate the <span><i>elements</i></span>, but for which in practice it is impractical to do so.</p>
|
||
<p>A “specializing” <span><i>type specifier</i></span> is one that describes a <span><i>subtype</i></span> by restricting the <span><i>type</i></span> of one or more components of the <span><i>type</i></span>, such as <span><i>element type</i></span> or <span><i>complex part type</i></span>.</p>
|
||
<p>A “predicating” <span><i>type specifier</i></span> is one that describes a <span><i>subtype</i></span> containing only those <span><i>objects</i></span> that satisfy a given <span><i>predicate</i></span>.</p>
|
||
<p>A “combining” <span><i>type specifier</i></span> is one that describes a <span><i>subtype</i></span> in a compositional way, using combining operations (such as “and,” “or,” and “not”) on other <span><i>types</i></span>.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14462-the-compound-type-specifier-syntax-section-of-a-dictionary-entry">1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry<a href="b-e-definitions.html#14462-the-compound-type-specifier-syntax-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry" title="Direct link to 1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry"></a></h4>
|
||
<!-- -->
|
||
<p>This information about a <span><i>type</i></span> describes the syntax of a <span><i>compound type specifier</i></span> for that <span><i>type</i></span>.</p>
|
||
<p>Whether or not the <span><i>type</i></span> is acceptable as an <span><i>atomic type specifier</i></span> is not represented here; see Section 1.4.4.6 (Dictionary Entries for Type Specifiers).</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14463-the-compound-type-specifier-arguments-section-of-a-dictionary-entry">1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry<a href="b-e-definitions.html#14463-the-compound-type-specifier-arguments-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry" title="Direct link to 1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry"></a></h4>
|
||
<!-- -->
|
||
<p>This information describes <span><i>type</i></span> information for the structures defined in the “Compound Type Specifier Syntax” section.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="14464-the-compound-type-specifier-description-section-of-a-dictionary-entry">1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry<a href="b-e-definitions.html#14464-the-compound-type-specifier-description-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry" title="Direct link to 1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry"></a></h4>
|
||
<!-- -->
|
||
<p>This information describes the meaning of the structures defined in the “Compound Type Specifier Syntax” section.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1447-the-constant-value-section-of-a-dictionary-entry">1.4.4.7 The “Constant Value” Section of a Dictionary Entry<a href="b-e-definitions.html#1447-the-constant-value-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.7 The “Constant Value” Section of a Dictionary Entry" title="Direct link to 1.4.4.7 The “Constant Value” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information describes the unchanging <span><i>type</i></span> and <span><i>value</i></span> of a <span><i>constant variable</i></span>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1448-the-description-section-of-a-dictionary-entry">1.4.4.8 The “Description” Section of a Dictionary Entry<a href="b-e-definitions.html#1448-the-description-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.8 The “Description” Section of a Dictionary Entry" title="Direct link to 1.4.4.8 The “Description” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>A summary of the <span><i>operator</i></span> and all intended aspects of the <span><i>operator</i></span> , but does not necessarily include all the fields referenced below it (“Side Effects,” “Exceptional Situations,” <em>etc.</em>)</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1449-the-examples-section-of-a-dictionary-entry">1.4.4.9 The “Examples” Section of a Dictionary Entry<a href="b-e-definitions.html#1449-the-examples-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.9 The “Examples” Section of a Dictionary Entry" title="Direct link to 1.4.4.9 The “Examples” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<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">Examples of use of the *operator* </span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> These examples are not considered part of the standard</span><span class="token comment" style="color:#999988;font-style:italic">; see Section 1.4.3 (Sections Not Formally Part Of This Standard). </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>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14410-the-exceptional-situations-section-of-a-dictionary-entry">1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry<a href="b-e-definitions.html#14410-the-exceptional-situations-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry" title="Direct link to 1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>Three kinds of information may appear here:</p>
|
||
<p><em>•</em> Situations that are detected by the <span><i>function</i></span> and formally signaled.</p>
|
||
<p><em>•</em> Situations that are handled by the <span><i>function</i></span>.</p>
|
||
<p><em>•</em> Situations that may be detected by the <span><i>function</i></span>.</p>
|
||
<p>This field does not include conditions that could be signaled by <span><i>functions</i></span> passed to and called by this <span><i>operator</i></span> as arguments or through dynamic variables, nor by executing subforms of this operator if it is a <span><i>macro</i></span> or <span><i>special operator</i></span> .</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14411-the-initial-value-section-of-a-dictionary-entry">1.4.4.11 The “Initial Value” Section of a Dictionary Entry<a href="b-e-definitions.html#14411-the-initial-value-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.11 The “Initial Value” Section of a Dictionary Entry" title="Direct link to 1.4.4.11 The “Initial Value” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information describes the initial <span><i>value</i></span> of a <span><i>dynamic variable</i></span>. Since this variable might change, see <span><i>type</i></span> restrictions in the “Value Type” section.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14412-the-argument-precedence-order-section-of-a-dictionary-entry">1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry<a href="b-e-definitions.html#14412-the-argument-precedence-order-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry" title="Direct link to 1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information describes the <span><i>argument precedence order</i></span> . If it is omitted, the <span><i>argument precedence order</i></span> is the default (left to right).</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14413-the-method-signature-section-of-a-dictionary-entry">1.4.4.13 The “Method Signature” Section of a Dictionary Entry<a href="b-e-definitions.html#14413-the-method-signature-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.13 The “Method Signature” Section of a Dictionary Entry" title="Direct link to 1.4.4.13 The “Method Signature” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>The description of a <span><i>generic function</i></span> includes descriptions of the <span><i>methods</i></span> that are defined on that <span><i>generic function</i></span> by the standard. A method signature is used to describe the <span><i>parameters</i></span> and <span><i>parameter specializers</i></span> for each <span><i>method</i></span>. <span><i>Methods</i></span> defined for the <span><i>generic function</i></span> must be of the form described by the <em>method signature</em>.</p>
|
||
<p><strong>F</strong> (<em>x class</em>) (<em>y t</em>) &optional <em>z</em> &key <em>k</em></p>
|
||
<p>This <span><i>signature</i></span> indicates that this method on the <span><i>generic function</i></span> <strong>F</strong> has two <span><i>required parameters</i></span>: <em>x</em>, which must be a <span><i>generalized instance</i></span> of the <em>class class</em>; and <em>y</em>, which can be any <span><i>object</i></span> (<em>i.e.</em>, a <span><i>generalized instance</i></span> of the <span><i>class</i></span> <span><b>t</b></span>). In addition, there is an <em>optional parameter z</em> and a <em>keyword parameter k</em>. This <span><i>signature</i></span> also indicates that this method on F is a <span><i>primary method</i></span> and has no <span><i>qualifiers</i></span>.</p>
|
||
<p>For each <span><i>parameter</i></span> , the <span><i>argument</i></span> supplied must be in the intersection of the <span><i>type</i></span> specified in the description of the corresponding <span><i>generic function</i></span> and the <span><i>type</i></span> given in the <span><i>signature</i></span> of some <span><i>method</i></span> (including not only those <span><i>methods</i></span> defined in this specification, but also <span><i>implementation-defined</i></span> or user-defined <span><i>methods</i></span> in situations where the definition of such <span><i>methods</i></span> is permitted).</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14414-the-name-section-of-a-dictionary-entry">1.4.4.14 The “Name” Section of a Dictionary Entry<a href="b-e-definitions.html#14414-the-name-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.14 The “Name” Section of a Dictionary Entry" title="Direct link to 1.4.4.14 The “Name” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This section introduces the dictionary entry. It is not explicitly labeled. It appears preceded and followed by a horizontal bar.</p>
|
||
<p>In large print at left, the <span><i>defined name</i></span> appears; if more than one <span><i>defined name</i></span> is to be described by the entry, all such <span><i>names</i></span> are shown separated by commas.</p>
|
||
<p>In somewhat smaller italic print at right is an indication of what kind of dictionary entry this is. Possible values are:</p>
|
||
<span><i>Accessor</i></span>
|
||
<p>This is an <em>accessor function</em>.</p>
|
||
<span><i>Class</i></span>
|
||
<p>This is a <span><i>class</i></span>.</p>
|
||
<p><em>Condition Type</em></p>
|
||
<p>This is a <span><i>subtype</i></span> of <span><i>type</i></span> <span><b>condition</b></span>.</p>
|
||
<span><i>Constant Variable</i></span>
|
||
<p>This is a <span><i>constant variable</i></span>.</p>
|
||
<span><i>Declaration</i></span>
|
||
<p>This is a <span><i>declaration identifier</i></span> .</p>
|
||
<span><i>Function</i></span>
|
||
<p>This is a <span><i>function</i></span>.</p>
|
||
<p><em>Local Function</em></p>
|
||
<p>This is a <span><i>function</i></span> that is defined only lexically within the scope of some other <span><i>macro form</i></span>.</p>
|
||
<p><em>Local Macro</em></p>
|
||
<p>This is a <span><i>macro</i></span> that is defined only lexically within the scope of some other <span><i>macro form</i></span>.</p>
|
||
<span><i>Macro</i></span>
|
||
<p>This is a <span><i>macro</i></span>.</p>
|
||
<span><i>Restart</i></span>
|
||
<p>This is a <span><i>restart</i></span>.</p>
|
||
<span><i>Special Operator</i></span>
|
||
<p>This is a <span><i>special operator</i></span> .</p>
|
||
<span><i>Standard Generic Function</i></span>
|
||
<p>This is a <span><i>standard generic function</i></span>.</p>
|
||
<span><i>Symbol</i></span>
|
||
<p>This is a <span><i>symbol</i></span> that is specially recognized in some particular situation, such as the syntax of a <span><i>macro</i></span>.</p>
|
||
<span><i>System Class</i></span>
|
||
<p>This is like <span><i>class</i></span>, but it identifies a <span><i>class</i></span> that is potentially a <span><i>built-in class</i></span>. (No <span><i>class</i></span> is actually required to be a <span><i>built-in class</i></span>.)</p>
|
||
<span><i>Type</i></span>
|
||
<p>This is an <span><i>atomic type specifier</i></span> , and depending on information for each particular entry, may subject to form other <span><i>type specifiers</i></span>.</p>
|
||
<span><i>Type Specifier</i></span>
|
||
<p>This is a <span><i>defined name</i></span> that is not an <span><i>atomic type specifier</i></span> , but that can be used in constructing valid <span><i>type specifiers</i></span>.</p>
|
||
<span><i>Variable</i></span>
|
||
<p>This is a <span><i>dynamic variable</i></span>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14415-the-notes-section-of-a-dictionary-entry">1.4.4.15 The “Notes” Section of a Dictionary Entry<a href="b-e-definitions.html#14415-the-notes-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.15 The “Notes” Section of a Dictionary Entry" title="Direct link to 1.4.4.15 The “Notes” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>Information not found elsewhere in this description which pertains to this <span><i>operator</i></span> . 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 <span><i>conforming implementation</i></span> or <span><i>conforming program</i></span> is permitted to ignore the presence of this information.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14416-the-pronunciation-section-of-a-dictionary-entry">1.4.4.16 The “Pronunciation” Section of a Dictionary Entry<a href="b-e-definitions.html#14416-the-pronunciation-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.16 The “Pronunciation” Section of a Dictionary Entry" title="Direct link to 1.4.4.16 The “Pronunciation” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This offers a suggested pronunciation for <span><i>defined names</i></span> 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 <em>Webster’s Third New International Dictionary the English Language, Unabridged</em>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14417-the-see-also-section-of-a-dictionary-entry">1.4.4.17 The “See Also” Section of a Dictionary Entry<a href="b-e-definitions.html#14417-the-see-also-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.17 The “See Also” Section of a Dictionary Entry" title="Direct link to 1.4.4.17 The “See Also” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>List of references to other parts of this standard that offer information relevant to this <span><i>operator</i></span> . This list is not part of the standard.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14418-the-side-effects-section-of-a-dictionary-entry">1.4.4.18 The “Side Effects” Section of a Dictionary Entry<a href="b-e-definitions.html#14418-the-side-effects-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.18 The “Side Effects” Section of a Dictionary Entry" title="Direct link to 1.4.4.18 The “Side Effects” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>Anything that is changed as a result of the evaluation of the <span><i>form</i></span> containing this <span><i>operator</i></span> .</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14419-the-supertypes-section-of-a-dictionary-entry">1.4.4.19 The “Supertypes” Section of a Dictionary Entry<a href="b-e-definitions.html#14419-the-supertypes-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.19 The “Supertypes” Section of a Dictionary Entry" title="Direct link to 1.4.4.19 The “Supertypes” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This appears in the dictionary entry for a <span><i>type</i></span>, and contains a list of the <em>standardized types</em> that must be <span><i>supertypes</i></span> of this <span><i>type</i></span>.</p>
|
||
<p>In <span><i>implementations</i></span> where there is a corresponding <span><i>class</i></span>, the order of the <em>classes</em> in the <span><i>class precedence list</i></span> is consistent with the order presented in this section.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14420-the-syntax-section-of-a-dictionary-entry">1.4.4.20 The “Syntax” Section of a Dictionary Entry<a href="b-e-definitions.html#14420-the-syntax-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.20 The “Syntax” Section of a Dictionary Entry" title="Direct link to 1.4.4.20 The “Syntax” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This section describes how to use the <span><i>defined name</i></span> in code. The “Syntax” description for a <span><i>generic function</i></span> describes the <span><i>lambda list</i></span> of the <span><i>generic function</i></span> itself, while the “Method Signatures” describe the <span><i>lambda lists</i></span> of the defined <span><i>methods</i></span>. The “Syntax” description for an <span><i>ordinary function</i></span>, a <span><i>macro</i></span>, or a <span><i>special operator</i></span> describes its <span><i>parameters</i></span>.</p>
|
||
<p>For example, an <span><i>operator</i></span> description might say:</p>
|
||
<p><strong>F</strong> <em>x y</em> &optional <em>z</em> &key <em>k</em></p>
|
||
<p>This description indicates that the function <strong>F</strong> has two required parameters, <em>x</em> and <em>y</em>. In addition, there is an optional parameter <em>z</em> and a keyword parameter <em>k</em>.</p>
|
||
<p>For <span><i>macros</i></span> and <span><i>special operators</i></span>, syntax is given in modified BNF notation; see Section 1.4.1.2 (Modified BNF Syntax). For <span><i>functions</i></span> a <span><i>lambda list</i></span> is given. In both cases, however, the outermost parentheses are omitted, and default value information is omitted.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="144201-special-syntax-notations-for-overloaded-operators">1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators<a href="b-e-definitions.html#144201-special-syntax-notations-for-overloaded-operators" class="hash-link" aria-label="Direct link to 1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators" title="Direct link to 1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators"></a></h4>
|
||
<!-- -->
|
||
<p>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><span><b>file-position</b></span> <em>stream → position</em></p>
|
||
<p><span><b>file-position</b></span> <em>stream position-spec → success-p</em></p>
|
||
<p>is operationally equivalent to this line:</p>
|
||
<p><span><b>file-position</b></span> <span><i>stream</i></span> &optional <em>position-spec → result</em></p>
|
||
<p>and differs only in that it provides on opportunity to introduce different names for <span><i>parameter</i></span> and <span><i>values</i></span> for each case. The separated (multi-line) notation is used when an <span><i>operator</i></span> is overloaded in such a way that the <span><i>parameters</i></span> are used in different ways depending on how many <span><i>arguments</i></span> are supplied (<em>e.g.</em>, for the <span><i>function</i></span> <span><b>/</b></span>) or the return values are different in the two cases (<em>e.g.</em>, for the</p>
|
||
<p><span><i>function</i></span> <span><b>file-position</b></span>).</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="144202-naming-conventions-for-rest-parameters">1.4.4.20.2 Naming Conventions for Rest Parameters<a href="b-e-definitions.html#144202-naming-conventions-for-rest-parameters" class="hash-link" aria-label="Direct link to 1.4.4.20.2 Naming Conventions for Rest Parameters" title="Direct link to 1.4.4.20.2 Naming Conventions for Rest Parameters"></a></h4>
|
||
<!-- -->
|
||
<p>Within this specification, if the name of a <span><i>rest parameter</i></span> is chosen to be a plural noun, use of that name in <span><i>parameter</i></span> font refers to the <span><i>list</i></span> to which the <span><i>rest parameter</i></span> is bound. Use of the singular form of that name in <span><i>parameter</i></span> font refers to an <span><i>element</i></span> of that <span><i>list</i></span>.</p>
|
||
<p>For example, given a syntax description such as:</p>
|
||
<p><strong>F</strong> &rest <span><i>arguments</i></span></p>
|
||
<p>it is appropriate to refer either to the <span><i>rest parameter</i></span> named <span><i>arguments</i></span> by name, or to one of its elements by speaking of “an <span><i>argument</i></span>,” “some <span><i>argument</i></span>,” “each <span><i>argument</i></span>” <em>etc.</em></p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="144203-requiring-non">1.4.4.20.3 Requiring Non<a href="b-e-definitions.html#144203-requiring-non" class="hash-link" aria-label="Direct link to 1.4.4.20.3 Requiring Non" title="Direct link to 1.4.4.20.3 Requiring Non"></a></h4>
|
||
<!-- -->
|
||
<p>In some cases it is useful to refer to all arguments equally as a single aggregation using a <span><i>rest parameter</i></span> while at the same time requiring at least one argument. A variety of imperative and declarative means are available in <span><i>code</i></span> for expressing such a restriction, however they generally do not manifest themselves in a <span><i>lambda list</i></span>. For descriptive purposes within this specification,</p>
|
||
<p><strong>F</strong> &rest <span><i>arguments</i></span><sup>+</sup></p>
|
||
<p>means the same as</p>
|
||
<p><strong>F</strong> &rest <span><i>arguments</i></span></p>
|
||
<p>but introduces the additional requirement that there be at least one <span><i>argument</i></span>.</p>
|
||
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="144204-return-values-in-the-syntax-section">1.4.4.20.4 Return values in the “Syntax” Section<a href="b-e-definitions.html#144204-return-values-in-the-syntax-section" class="hash-link" aria-label="Direct link to 1.4.4.20.4 Return values in the “Syntax” Section" title="Direct link to 1.4.4.20.4 Return values in the “Syntax” Section"></a></h4>
|
||
<!-- -->
|
||
<p>An evaluation arrow “→” precedes a list of <span><i>values</i></span> to be returned. For example:</p>
|
||
<p><strong>F</strong> <em>a b c → x</em></p>
|
||
<p>indicates that F is an operator that has three <span><i>required parameters</i></span> (<em>i.e.</em>, <em>a</em>, <em>b</em>, and <em>c</em>) and that returns one <span><i>value</i></span> (<em>i.e.</em>, <em>x</em>). If more than one <span><i>value</i></span> is returned by an operator, the <span><i>names</i></span> of the <span><i>values</i></span> are separated by commas, as in:</p>
|
||
<p><strong>F</strong> <em>a b c → x, y, z</em></p>
|
||
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="1442041-no-arguments-or-values-in-the-syntax-section">1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section<a href="b-e-definitions.html#1442041-no-arguments-or-values-in-the-syntax-section" class="hash-link" aria-label="Direct link to 1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section" title="Direct link to 1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section"></a></h5>
|
||
<!-- -->
|
||
<p>If no <span><i>arguments</i></span> are permitted, or no <span><i>values</i></span> are returned, a special notation is used to make this more visually apparent. For example,</p>
|
||
<p><strong>F</strong> <em>⟨no arguments⟩ → ⟨no values⟩</em></p>
|
||
<p>indicates that F is an operator that accepts no <span><i>arguments</i></span> and returns no <span><i>values</i></span>.</p>
|
||
<h5 class="anchor anchorWithStickyNavbar_LWe7" id="1442042-unconditional-transfer-of-control-in-the-syntax-section">1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section<a href="b-e-definitions.html#1442042-unconditional-transfer-of-control-in-the-syntax-section" class="hash-link" aria-label="Direct link to 1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section" title="Direct link to 1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section"></a></h5>
|
||
<!-- -->
|
||
<p>Some <span><i>operators</i></span> perform an unconditional transfer of control, and so never have any return values. Such <span><i>operators</i></span> are notated using a notation such as the following:</p>
|
||
<p><strong>F</strong> <em>a b c →</em></p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14421-the-valid-context-section-of-a-dictionary-entry">1.4.4.21 The “Valid Context” Section of a Dictionary Entry<a href="b-e-definitions.html#14421-the-valid-context-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.21 The “Valid Context” Section of a Dictionary Entry" title="Direct link to 1.4.4.21 The “Valid Context” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<p>This information is used by dictionary entries such as “Declarations” in order to restrict the context in which the declaration may appear.</p>
|
||
<p>A given “Declaration” might appear in a <span><i>declaration</i></span> (<em>i.e.</em>, a <span><b>declare</b></span> <span><i>expression</i></span>), a <span><i>proclamation</i></span> (<em>i.e.</em>, a <span><b>declaim</b></span> or <span><b>proclaim</b></span> <span><i>form</i></span>), or both.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="14422-the-value-type-section-of-a-dictionary-entry">1.4.4.22 The “Value Type” Section of a Dictionary Entry<a href="b-e-definitions.html#14422-the-value-type-section-of-a-dictionary-entry" class="hash-link" aria-label="Direct link to 1.4.4.22 The “Value Type” Section of a Dictionary Entry" title="Direct link to 1.4.4.22 The “Value Type” Section of a Dictionary Entry"></a></h3>
|
||
<!-- -->
|
||
<!-- -->
|
||
<p>This information describes any <span><i>type</i></span> restrictions on a <span><i>dynamic variable</i></span>.</p>
|
||
<p>Except as explicitly specified otherwise, the consequences are undefined if this type restriction is violated.</p></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-1/b-e-definitions.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="b-d-referenced-publications.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">1.3 Referenced Publications</div></a><a class="pagination-nav__link pagination-nav__link--next" href="b-f-conformance.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">1.5 Conformance</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="b-e-definitions.html#141-notational-conventions" class="table-of-contents__link toc-highlight">1.4.1 Notational Conventions</a><ul><li><a href="b-e-definitions.html#1411-font-key" class="table-of-contents__link toc-highlight">1.4.1.1 Font Key</a></li><li><a href="b-e-definitions.html#1412-modified-bnf-syntax" class="table-of-contents__link toc-highlight">1.4.1.2 Modified BNF Syntax</a><ul><li><a href="b-e-definitions.html#14121-splicing-in-modified-bnf-syntax" class="table-of-contents__link toc-highlight">1.4.1.2.1 Splicing in Modified BNF Syntax</a></li><li><a href="b-e-definitions.html#14122-indirection-in-modified-bnf-syntax" class="table-of-contents__link toc-highlight">1.4.1.2.2 Indirection in Modified BNF Syntax</a></li><li><a href="b-e-definitions.html#14123-additional-uses-for-indirect-definitions-in-modified-bnf-syntax" class="table-of-contents__link toc-highlight">1.4.1.2.3 Additional Uses for Indirect Definitions in Modified BNF Syntax</a></li></ul></li><li><a href="b-e-definitions.html#1413-special-symbols" class="table-of-contents__link toc-highlight">1.4.1.3 Special Symbols</a></li><li><a href="b-e-definitions.html#1414-objects-with-multiple-notations" class="table-of-contents__link toc-highlight">1.4.1.4 Objects with Multiple Notations</a><ul><li><a href="b-e-definitions.html#14141-case-in-symbols" class="table-of-contents__link toc-highlight">1.4.1.4.1 Case in Symbols</a></li><li><a href="b-e-definitions.html#14142-numbers" class="table-of-contents__link toc-highlight">1.4.1.4.2 Numbers</a></li><li><a href="b-e-definitions.html#14143-use-of-the-dot-character" class="table-of-contents__link toc-highlight">1.4.1.4.3 Use of the Dot Character</a></li><li><a href="b-e-definitions.html#14144-nil" class="table-of-contents__link toc-highlight">1.4.1.4.4 NIL</a></li></ul></li><li><a href="b-e-definitions.html#1415-designators" class="table-of-contents__link toc-highlight">1.4.1.5 Designators</a></li><li><a href="b-e-definitions.html#1416-nonsense-words" class="table-of-contents__link toc-highlight">1.4.1.6 Nonsense Words</a></li></ul></li><li><a href="b-e-definitions.html#142-error-terminology" class="table-of-contents__link toc-highlight">1.4.2 Error Terminology</a></li><li><a href="b-e-definitions.html#143-sections-not-formally-part-of-this-standard" class="table-of-contents__link toc-highlight">1.4.3 Sections Not Formally Part Of This Standard</a></li><li><a href="b-e-definitions.html#144-interpreting-dictionary-entries" class="table-of-contents__link toc-highlight">1.4.4 Interpreting Dictionary Entries</a><ul><li><a href="b-e-definitions.html#1441-the-affected-by-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.1 The “Affected By” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1442-the-arguments-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.2 The “Arguments” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1443-the-arguments-and-values-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.3 The “Arguments and Values” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1444-the-binding-types-affected-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.4 The “Binding Types Affected” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1445-the-class-precedence-list-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.5 The “Class Precedence List” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1446-dictionary-entries-for-type-specifiers" class="table-of-contents__link toc-highlight">1.4.4.6 Dictionary Entries for Type Specifiers</a><ul><li><a href="b-e-definitions.html#14461-the-compound-type-specifier-kind-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.6.1 The “Compound Type Specifier Kind” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14462-the-compound-type-specifier-syntax-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.6.2 The “Compound Type Specifier Syntax” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14463-the-compound-type-specifier-arguments-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.6.3 The “Compound Type Specifier Arguments” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14464-the-compound-type-specifier-description-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.6.4 The “Compound Type Specifier Description” Section of a Dictionary Entry</a></li></ul></li><li><a href="b-e-definitions.html#1447-the-constant-value-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.7 The “Constant Value” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1448-the-description-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.8 The “Description” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#1449-the-examples-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.9 The “Examples” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14410-the-exceptional-situations-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.10 The “Exceptional Situations” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14411-the-initial-value-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.11 The “Initial Value” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14412-the-argument-precedence-order-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.12 The “Argument Precedence Order” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14413-the-method-signature-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.13 The “Method Signature” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14414-the-name-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.14 The “Name” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14415-the-notes-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.15 The “Notes” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14416-the-pronunciation-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.16 The “Pronunciation” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14417-the-see-also-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.17 The “See Also” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14418-the-side-effects-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.18 The “Side Effects” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14419-the-supertypes-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.19 The “Supertypes” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14420-the-syntax-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.20 The “Syntax” Section of a Dictionary Entry</a><ul><li><a href="b-e-definitions.html#144201-special-syntax-notations-for-overloaded-operators" class="table-of-contents__link toc-highlight">1.4.4.20.1 Special “Syntax” Notations for Overloaded Operators</a></li><li><a href="b-e-definitions.html#144202-naming-conventions-for-rest-parameters" class="table-of-contents__link toc-highlight">1.4.4.20.2 Naming Conventions for Rest Parameters</a></li><li><a href="b-e-definitions.html#144203-requiring-non" class="table-of-contents__link toc-highlight">1.4.4.20.3 Requiring Non</a></li><li><a href="b-e-definitions.html#144204-return-values-in-the-syntax-section" class="table-of-contents__link toc-highlight">1.4.4.20.4 Return values in the “Syntax” Section</a><ul><li><a href="b-e-definitions.html#1442041-no-arguments-or-values-in-the-syntax-section" class="table-of-contents__link toc-highlight">1.4.4.20.4.1 No Arguments or Values in the “Syntax” Section</a></li><li><a href="b-e-definitions.html#1442042-unconditional-transfer-of-control-in-the-syntax-section" class="table-of-contents__link toc-highlight">1.4.4.20.4.2 Unconditional Transfer of Control in the “Syntax” Section</a></li></ul></li></ul></li><li><a href="b-e-definitions.html#14421-the-valid-context-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.21 The “Valid Context” Section of a Dictionary Entry</a></li><li><a href="b-e-definitions.html#14422-the-value-type-section-of-a-dictionary-entry" class="table-of-contents__link toc-highlight">1.4.4.22 The “Value Type” Section of a Dictionary Entry</a></li></ul></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="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://www.reddit.com/r/common_lisp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Reddit<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://irclog.tymoon.eu/libera/commonlisp" target="_blank" rel="noopener noreferrer" class="footer__link-item">IRC<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></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="../../blog.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/lisp-docs/lisp-docs.github.io" target="_blank" rel="noopener noreferrer" class="footer__link-item">Tutorial and General Content 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></li><li class="footer__item"><a href="https://github.com/lisp-docs/cl-language-reference/" target="_blank" rel="noopener noreferrer" class="footer__link-item">Technical Reference 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></li><li class="footer__item"><a href="../../docs/contribute.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Contribute to the Docs</a></li></ul></div><div class="col footer__col"><div class="footer__title">Common Lisp Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a href="../../docs/about.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">About</a></li><li class="footer__item"><a href="../../docs/whylisp.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Why Lisp</a></li><li class="footer__item"><a href="../../docs/getting-started.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Getting Started</a></li><li class="footer__item"><a href="../../docs/faq.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">FAQ</a></li><li class="footer__item"><a href="../../docs/help.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Getting Help</a></li><li class="footer__item"><a href="../../docs/howto.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">How To Guides</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 Common Lisp Docs, MIT License (see GitHub Repo).</div></div></div></footer></div>
|
||
</body>
|
||
</html> |