1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/meta-object-protocol/chap-5/5-3-inheritance.html

163 lines
No EOL
47 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-meta-object-protocol/chap-5/5-3-inheritance" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">5.3 Inheritance Structure Of Metaobject Classes | 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/meta-object-protocol/chap-5/5-3-inheritance"><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="5.3 Inheritance Structure Of Metaobject Classes | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="5.3.1 Implementation And User Specialization"><meta data-rh="true" property="og:description" content="5.3.1 Implementation And User Specialization"><link data-rh="true" rel="icon" href="../../img/favicon.ico"><link data-rh="true" rel="canonical" href="5-3-inheritance.html"><link data-rh="true" rel="alternate" href="5-3-inheritance.html" hreflang="en"><link data-rh="true" rel="alternate" href="5-3-inheritance.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="5-3-inheritance.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 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-1/b-b-scope-purpose-and-history.html">1. Introduction</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-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"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="../../meta-object-protocol.html">27. Meta Object Protocol</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="../../meta-object-protocol.html">Meta Object Protocol Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" tabindex="0" href="../../category/chapter-5---concepts.html">Chapter 5 - Concepts</a><button aria-label="Collapse sidebar category &#x27;Chapter 5 - Concepts&#x27;" type="button" class="clean-btn menu__caret"></button></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-3 menu__list-item"><a class="menu__link" tabindex="0" href="introduction.html">5.1 Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="5-2-metaobjects.html">5.2 Metaobjects</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="5-3-inheritance.html">5.3 Inheritance Structure Of Metaobject Classes</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="5-4-processing.html">5.4 Processing Of The User Interface Macros</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="5-5-subprotocols.html">5.5 Subprotocols</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="../../category/chapter-6---generic-functions-and-methods.html">Chapter 6 - Generic Functions and Methods</a><button aria-label="Expand sidebar category &#x27;Chapter 6 - Generic Functions and Methods&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="../../category/additional-material.html">Additional Material</a><button aria-label="Expand sidebar category &#x27;Additional Material&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="../../category/mop-dictionary.html">MOP Dictionary</a><button aria-label="Expand sidebar category &#x27;MOP Dictionary&#x27;" type="button" class="clean-btn menu__caret"></button></div></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="../../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">27. Meta Object Protocol</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="../../category/chapter-5---concepts.html"><span itemprop="name">Chapter 5 - Concepts</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">5.3 Inheritance Structure Of Metaobject Classes</span><meta itemprop="position" content="3"></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"><header><h1>5.3 Inheritance Structure Of Metaobject Classes</h1></header><p>The inheritance structure of the specified metaobject classes is shown in the table below (FIXME: insert anchor).</p>
<p>Direct superclass relationships among the specified metaobject classes. The class of every class shown is <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a> except for the class <code>t</code> which is an instance of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-built-in-class">built-in-class</a> and the classes <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-generic-function">generic-function</a> and <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-generic-function">standard-generic-function</a> which are instances of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-class">funcallable-standard-class</a>.</p>
<p>Metaobject Class</p>
<p>Direct Superclasses</p>
<p><code>standard-object</code></p>
<p><code>(t)</code></p>
<p><code>funcallable-standard-object</code></p>
<p><code>(standard-object function)</code></p>
<ul>
<li></li>
</ul>
<p><code>metaobject</code></p>
<p><code>(standard-object)</code></p>
<ul>
<li></li>
</ul>
<p><code>generic-function</code></p>
<p><code>(metaobject funcallable-standard-object)</code></p>
<p><code>standard-generic-function</code></p>
<p><code>(generic-function)</code></p>
<ul>
<li></li>
</ul>
<p><code>method</code></p>
<p><code>(metaobject)</code></p>
<p><code>standard-method</code></p>
<p><code>(method)</code></p>
<ul>
<li></li>
</ul>
<p><code>standard-accessor-method</code></p>
<p><code>(standard-method)</code></p>
<p><code>standard-reader-method</code></p>
<p><code>(standard-accessor-method)</code></p>
<p><code>standard-writer-method</code></p>
<p><code>(standard-accessor-method)</code></p>
<ul>
<li></li>
</ul>
<p><code>method-combination</code></p>
<p><code>(metaobject)</code></p>
<ul>
<li></li>
</ul>
<p><code>slot-definition</code></p>
<p><code>(metaobject)</code></p>
<ul>
<li></li>
</ul>
<p><code>direct-slot-definition</code></p>
<p><code>(slot-definition)</code></p>
<ul>
<li></li>
</ul>
<p><code>effective-slot-definition</code></p>
<p><code>(slot-definition)</code></p>
<ul>
<li></li>
</ul>
<p><code>standard-slot-definition</code></p>
<p><code>(slot-definition)</code></p>
<p><code>standard-direct-slot-definition</code></p>
<p><code>(standard-slot-definition direct-slot-definition)</code></p>
<p><code>standard-effective-slot-definition</code></p>
<p><code>(standard-slot-definition effective-slot-definition)</code></p>
<ul>
<li></li>
</ul>
<p><code>specializer</code></p>
<p><code>(metaobject)</code></p>
<p><code>eql-specializer</code></p>
<p><code>(specializer)</code></p>
<ul>
<li></li>
</ul>
<p><code>class</code></p>
<p><code>(specializer)</code></p>
<p><code>built-in-class</code></p>
<p><code>(class)</code></p>
<p><code>forward-referenced-class</code></p>
<p><code>(class)</code></p>
<p><code>standard-class</code></p>
<p><code>(class)</code></p>
<p><code>funcallable-standard-class</code></p>
<p><code>(class)</code></p>
<p>Each class marked with a ``*&#x27;&#x27; is an <em>abstract class</em> and is not intended to be instantiated. The results are undefined if an attempt is made to make an instance of one of these classes with <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/make-instance">make-instance</a>.</p>
<p>The classes <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-direct-slot-definition">standard-direct-slot-definition</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-effective-slot-definition">standard-effective-slot-definition</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-method">standard-method</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-reader-method">standard-reader-method</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-writer-method">standard-writer-method</a>, and <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-generic-function">standard-generic-function</a> are called <em>standard metaobject classes</em>. For each kind of metaobject, this is the class the user interface macros presented in the CLOS Specification use by default. These are also the classes on which user specializations are normally based.</p>
<p>The classes <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-built-in-class">built-in-class</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-class">funcallable-standard-class</a> and <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-forward-referenced-class">forward-referenced-class</a> are special-purpose class metaobject classes. Built-in classes are instances of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-built-in-class">built-in-class</a>. The class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-class">funcallable-standard-class</a> provides a special kind of instances described in the section called ``Funcallable Instances.&#x27;&#x27; When the definition of a class references another class which has not yet been defined, an instance of <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-forward-referenced-class">forward-referenced-class</a> is used as a stand-in until the class is actually defined.</p>
<p>The class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-object">standard-object</a> is the <em>default direct superclass</em> of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a>. When an instance of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a> is created, and no direct superclasses are explicitly specified, it defaults to the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-object">standard-object</a>. In this way, any behavior associated with the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-object">standard-object</a> will be inherited, directly or indirectly, by all instances of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a>. A subclass of <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a> may have a different class as its default direct superclass, but that class must be a subclass of the class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-object">standard-object</a>.</p>
<p>The same is true for <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-class">funcallable-standard-class</a> and <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-object">funcallable-standard-object</a>.</p>
<p>The class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-specializer">specializer</a> captures only the most basic behavior of method specializers, and is not itself intended to be instantiated. The class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-class">class</a> is a direct subclass of <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-specializer">specializer</a> reflecting the property that classes by themselves can be used as method specializers. The class <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-eql-specializer">eql-specializer</a> is used for <code>eql</code> specializers.</p>
<ul>
<li><a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/implementation-and-user-specialization">Implementation and user specialization.</a>
<ul>
<li><a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/restrictions-on-implementations">Restrictions on implementations</a></li>
<li><a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/restrictions-on-portable-programs">Restrictions on portable programs</a></li>
</ul>
</li>
</ul>
<p><strong>Note:</strong></p>
<p>Taken literally, this page suggests that the metaclass of <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-object">funcallable-standard-object</a> is <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-standard-class">standard-class</a>, but we think that is a mistake, and that the metaclass should be <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/class-funcallable-standard-class">funcallable-standard-class</a> instead.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="531-implementation-and-user-specialization">5.3.1 Implementation And User Specialization<a href="5-3-inheritance.html#531-implementation-and-user-specialization" class="hash-link" aria-label="Direct link to 5.3.1 Implementation And User Specialization" title="Direct link to 5.3.1 Implementation And User Specialization"></a></h2>
<!-- -->
<!-- -->
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="532-restrictions-on-implementations">5.3.2 Restrictions On Implementations<a href="5-3-inheritance.html#532-restrictions-on-implementations" class="hash-link" aria-label="Direct link to 5.3.2 Restrictions On Implementations" title="Direct link to 5.3.2 Restrictions On Implementations"></a></h3>
<!-- -->
<p>Implementations are allowed latitude to modify the structure of specified classes and methods. This includes: the interposition of implementation-specific classes; the promotion of specified methods; and the consolidation of two or more specified methods into a single method specialized to interposed classes.</p>
<p>Any such modifications are permitted only so long as for any portable class <em>C</em><del>p</del> that is a subclass of one or more specified classes <em>C</em><del>0</del> ... <em>C</em><del>i</del>, the following conditions are met:</p>
<ul>
<li>
<p>In the actual class precedence list of <em>C</em><del>p</del>, the classes <em>C</em><del>0</del> ... <em>C</em><del>i</del> must appear in the same order as they would have if no implementation-specific modifications had been made.</p>
</li>
<li>
<p>The method applicability of any specified generic function must be the same in terms of behavior as it would have been had no implementation-specific changes been made. This includes specified generic functions that have had portable methods added. In this context, the expression ``the same in terms of behavior&#x27;&#x27; means that methods with the same behavior as those specified are applicable, and in the same order.</p>
</li>
<li>
<p>No portable class <em>C</em><del>p</del> may inherit, by virtue of being a direct or indirect subclass of a specified class, any slot for which the name is a symbol accessible in the <code>common-lisp-user</code> package or exported by any package defined in the ANSI Common Lisp standard.</p>
</li>
<li>
<p>Implementations are free to define implementation-specific before- and after-methods on specified generic functions. Implementations are also free to define implementation-specific around-methods with extending behavior.</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="533-restrictions-on-portable-programs">5.3.3 Restrictions On Portable Programs<a href="5-3-inheritance.html#533-restrictions-on-portable-programs" class="hash-link" aria-label="Direct link to 5.3.3 Restrictions On Portable Programs" title="Direct link to 5.3.3 Restrictions On Portable Programs"></a></h3>
<!-- -->
<!-- -->
<p>Portable programs are allowed to define subclasses of specified classes, and are permitted to define methods on specified generic functions, with the following restrictions. The results are undefined if any of these restrictions is violated.</p>
<ul>
<li>
<p>Portable programs must not redefine any specified classes, generic functions, methods or method combinations. Any method defined by a portable program on a specified generic function must have at least one specializer that is neither a specified class nor an <code>eql</code> specializer whose associated value is an instance of a specified class.</p>
</li>
<li>
<p>Portable programs may define methods that extend specified methods unless the description of the specified method explicitly prohibits this. Unless there is a specific statement to the contrary, these extending methods must return whatever value was returned by the call to <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_call_n.htm#call-next-method" target="_blank" rel="noopener noreferrer">call-next-method</a>.</p>
</li>
<li>
<p>Portable programs may define methods that override specified methods only when the description of the specified method explicitly allows this. Typically, when a method is allowed to be overridden, a small number of related methods will need to be overridden as well.</p>
<p>An example of this is the specified methods on the generic functions <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/add-dependent">add-dependent</a>, <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/remove-dependent">remove-dependent</a>, and <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/map-dependents">map-dependents</a>. Overriding a specified method on one of these generic functions requires that the corresponding method on the other two generic functions be overridden as well.</p>
</li>
<li>
<p>Portable methods on specified generic functions specialized to portable metaobject classes must be defined before any instances of those classes (or any subclasses) are created, either directly or indirectly by a call to <a href="https://lisp-docs.github.io/cl-language-reference/meta-object-protocol/make-instance">make-instance</a>. Methods can be defined after instances are created by <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_alloca.htm#allocate-instance" target="_blank" rel="noopener noreferrer">allocate-instance</a> however. Portable metaobject classes cannot be redefined.</p>
<p><strong>Implementation note:</strong></p>
<p>The purpose of this last restriction is to permit implementations to provide performance optimizations by analyzing, at the time the first instance of a metaobject class is initialized, what portable methods will be applicable to it. This can make it possible to optimize calls to those specified generic functions which would have no applicable portable methods.</p>
<p><strong>Note:</strong></p>
<p>The specification technology used in this document needs further development. The concepts of object-oriented protocols and subclass specialization are intuitively familiar to programmers of object-oriented systems; the protocols presented here fit quite naturally into this framework. Nonetheless, in preparing this document, we have found it difficult to give specification-quality descriptions of the protocols in a way that makes it clear what extensions users can and cannot write. Object-oriented protocol specification is inherently about specifying leeway, and this seems difficult using current technology.</p>
</li>
</ul></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/meta-object-protocol/chap-5/5-3-inheritance.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="5-2-metaobjects.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">5.2 Metaobjects</div></a><a class="pagination-nav__link pagination-nav__link--next" href="5-4-processing.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">5.4 Processing Of The User Interface Macros</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="5-3-inheritance.html#531-implementation-and-user-specialization" class="table-of-contents__link toc-highlight">5.3.1 Implementation And User Specialization</a><ul><li><a href="5-3-inheritance.html#532-restrictions-on-implementations" class="table-of-contents__link toc-highlight">5.3.2 Restrictions On Implementations</a></li><li><a href="5-3-inheritance.html#533-restrictions-on-portable-programs" class="table-of-contents__link toc-highlight">5.3.3 Restrictions On Portable Programs</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>