1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/chap-21/cb-b-stream-concepts.html

103 lines
No EOL
45 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.

This file contains Unicode characters that might be confused with other characters. 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-chap-21/cb-b-stream-concepts" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">21.1 Stream Concepts | 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-21/cb-b-stream-concepts"><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="21.1 Stream Concepts | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="21.1.1 Introduction to Streams"><meta data-rh="true" property="og:description" content="21.1.1 Introduction to Streams"><link data-rh="true" rel="icon" href="../img/favicon.ico"><link data-rh="true" rel="canonical" href="cb-b-stream-concepts.html"><link data-rh="true" rel="alternate" href="cb-b-stream-concepts.html" hreflang="en"><link data-rh="true" rel="alternate" href="cb-b-stream-concepts.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="cb-b-stream-concepts.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"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="cb-b-stream-concepts.html">21. Streams</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 menu__link--active" aria-current="page" tabindex="0" href="cb-b-stream-concepts.html">21.1 Stream Concepts</a></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/212-streams-dictionary.html">21.2 Streams Dictionary</a><button aria-label="Expand sidebar category &#x27;21.2 Streams 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="../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">21. Streams</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">21.1 Stream Concepts</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>21.1 Stream Concepts</h1>
<!-- -->
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2111-introduction-to-streams">21.1.1 Introduction to Streams<a href="cb-b-stream-concepts.html#2111-introduction-to-streams" class="hash-link" aria-label="Direct link to 21.1.1 Introduction to Streams" title="Direct link to 21.1.1 Introduction to Streams"></a></h2>
<!-- -->
<p>A <span><i>stream</i></span> is an <span><i>object</i></span> that can be used with an input or output function to identify an appropriate source or sink of <span><i>characters</i></span> or <span><i>bytes</i></span> for that operation. A <em>character stream</em> is a source or sink of <span><i>characters</i></span>. A <em>binary stream</em> is a source or sink of <span><i>bytes</i></span>.</p>
<p>Some operations may be performed on any kind of <span><i>stream</i></span>; Figure 211 provides a list of <span><i>standardized</i></span> operations that are potentially useful with any kind of <span><i>stream</i></span>.</p>
<p>|</p><p><strong>close stream-element-type</strong> </p><p><strong>input-stream-p streamp</strong> </p><p><strong>interactive-stream-p with-open-stream</strong> </p><p><strong>output-stream-p</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 211. Some General-Purpose Stream Operations</strong></p>
<p>Other operations are only meaningful on certain <em>stream types</em>. For example, <span><b>read-char</b></span> is only defined for <em>character streams</em> and <span><b>read-byte</b></span> is only defined for <em>binary streams</em>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="21111-abstract-classifications-of-streams">21.1.1.1 Abstract Classifications of Streams<a href="cb-b-stream-concepts.html#21111-abstract-classifications-of-streams" class="hash-link" aria-label="Direct link to 21.1.1.1 Abstract Classifications of Streams" title="Direct link to 21.1.1.1 Abstract Classifications of Streams"></a></h3>
<!-- -->
<!-- -->
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="211111-input">21.1.1.1.1 Input<a href="cb-b-stream-concepts.html#211111-input" class="hash-link" aria-label="Direct link to 21.1.1.1.1 Input" title="Direct link to 21.1.1.1.1 Input"></a></h4>
<!-- -->
<p>A <span><i>stream</i></span>, whether a <em>character stream</em> or a <em>binary stream</em>, can be an <em>input stream</em> (source of data), an <em>output stream</em> (sink for data), both, or (<em>e.g.</em>, when “<!-- -->:direction<!-- --> <!-- -->:probe<!-- -->” is given to <span><b>open</b></span>) neither.</p>
<p>Figure 212 shows <span><i>operators</i></span> relating to <em>input streams</em>.</p>
<p>|</p><p><strong>clear-input read-byte read-from-string</strong> </p><p><strong>listen read-char read-line</strong> </p><p><strong>peek-char read-char-no-hang read-preserving-whitespace read read-delimited-list unread-char</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 212. Operators relating to Input Streams.</strong></p>
<p>Figure 213 shows <span><i>operators</i></span> relating to <em>output streams</em>.</p>
<p>|</p><p><strong>clear-output prin1 write</strong> </p><p><strong>finish-output prin1-to-string write-byte</strong> </p><p><strong>force-output princ write-char</strong> </p><p><strong>format princ-to-string write-line</strong> </p><p><strong>fresh-line print write-string</strong> </p><p><strong>pprint terpri write-to-string</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 213. Operators relating to Output Streams.</strong></p>
<p>A <span><i>stream</i></span> that is both an <em>input stream</em> and an <em>output stream</em> is called a <em>bidirectional stream</em>. See the <span><i>functions</i></span> <strong>input-stream-p</strong> and <strong>output-stream-p</strong>.</p>
<p>Any of the <span><i>operators</i></span> listed in Figure 212 or Figure 213 can be used with <em>bidirectional streams</em>. In addition, Figure 214 shows a list of <span><i>operators</i></span> that relate specificaly to <em>bidirectional streams</em>.</p>
<p>|<strong>y-or-n-p yes-or-no-p</strong>|</p>
<p>| :- |</p>
<p><strong>Figure 214. Operators relating to Bidirectional Streams.</strong></p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="211112-open-and-closed-streams">21.1.1.1.2 Open and Closed Streams<a href="cb-b-stream-concepts.html#211112-open-and-closed-streams" class="hash-link" aria-label="Direct link to 21.1.1.1.2 Open and Closed Streams" title="Direct link to 21.1.1.1.2 Open and Closed Streams"></a></h4>
<!-- -->
<p><span><i>Streams</i></span> are either <span><i>open</i></span> or <span><i>closed</i></span>.</p>
<p>Except as explicitly specified otherwise, operations that create and return <span><i>streams</i></span> return <em>open streams</em>.</p>
<p>The action of <em>closing</em> a <span><i>stream</i></span> marks the end of its use as a source or sink of data, permitting the <span><i>implementation</i></span> to reclaim its internal data structures, and to free any external resources which might have been locked by the <span><i>stream</i></span> when it was opened.</p>
<p>Except as explicitly specified otherwise, the consequences are undefined when a <em>closed stream</em> is used where a <span><i>stream</i></span> is called for.</p>
<p>Coercion of <span><i>streams</i></span> to <span><i>pathnames</i></span> is permissible for <em>closed streams</em>; in some situations, such as for a <span><i>truename</i></span> computation, the result might be different for an <em>open stream</em> and for that same <span><i>stream</i></span> once it has been <span><i>closed</i></span>.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="211113-interactive-streams">21.1.1.1.3 Interactive Streams<a href="cb-b-stream-concepts.html#211113-interactive-streams" class="hash-link" aria-label="Direct link to 21.1.1.1.3 Interactive Streams" title="Direct link to 21.1.1.1.3 Interactive Streams"></a></h4>
<!-- -->
<p>An <span><i>interactive stream</i></span> is one on which it makes sense to perform interactive querying.</p>
<p>The precise meaning of an <span><i>interactive stream</i></span> is <span><i>implementation-defined</i></span>, and may depend on the underlying operating system. Some examples of the things that an <span><i>implementation</i></span> might choose to use as identifying characteristics of an <span><i>interactive stream</i></span> include:</p>
<p><em></em> The <span><i>stream</i></span> is connected to a person (or equivalent) in such a way that the program can prompt for information and expect to receive different input depending on the prompt.</p>
<p><em></em> The program is expected to prompt for input and support “normal input editing”.</p>
<p><em></em> <span><b>read-char</b></span> might wait for the user to type something before returning instead of immediately returning a character or end-of-file.</p>
<p>The general intent of having some <span><i>streams</i></span> be classified as <span><i>interactive streams</i></span> is to allow them to be distinguished from streams containing batch (or background or command-file) input. Output to batch streams is typically discarded or saved for later viewing, so interactive queries to such streams might not have the expected effect.</p>
<p><em>Terminal I/O</em> might or might not be an <span><i>interactive stream</i></span>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="21112-abstract-classifications-of-streams">21.1.1.2 Abstract Classifications of Streams<a href="cb-b-stream-concepts.html#21112-abstract-classifications-of-streams" class="hash-link" aria-label="Direct link to 21.1.1.2 Abstract Classifications of Streams" title="Direct link to 21.1.1.2 Abstract Classifications of Streams"></a></h3>
<!-- -->
<!-- -->
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="211121-file-streams">21.1.1.2.1 File Streams<a href="cb-b-stream-concepts.html#211121-file-streams" class="hash-link" aria-label="Direct link to 21.1.1.2.1 File Streams" title="Direct link to 21.1.1.2.1 File Streams"></a></h4>
<!-- -->
<p>Some <span><i>streams</i></span>, called <span><i>file streams</i></span>, provide access to <span><i>files</i></span>. An <span><i>object</i></span> of <span><i>class</i></span> <span><b>file-stream</b></span> is used to represent a <span><i>file stream</i></span>.</p>
<p>The basic operation for opening a <span><i>file</i></span> is <span><b>open</b></span>, which typically returns a <span><i>file stream</i></span> (see its dictionary entry for details). The basic operation for closing a <span><i>stream</i></span> is <span><b>close</b></span>. The macro <span><b>with-open-file</b></span> is useful to express the common idiom of opening a <span><i>file</i></span> for the duration of a given body of <span><i>code</i></span>, and assuring that the resulting <span><i>stream</i></span> is closed upon exit from that body.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="21113-other-subclasses-of-stream">21.1.1.3 Other Subclasses of Stream<a href="cb-b-stream-concepts.html#21113-other-subclasses-of-stream" class="hash-link" aria-label="Direct link to 21.1.1.3 Other Subclasses of Stream" title="Direct link to 21.1.1.3 Other Subclasses of Stream"></a></h3>
<!-- -->
<p>The <span><i>class</i></span> <span><b>stream</b></span> has a number of <em>subclasses</em> defined by this specification. Figure 215 shows some information about these subclasses.</p>
<p>|<strong>Class Related Operators</strong>|</p>
<p>| :- |</p>
<p>|</p><p><strong>broadcast-stream make-broadcast-stream</strong> </p><p><span><b>broadcast-stream-streams</b></span> </p><p><strong>concatenated-stream make-concatenated-stream</strong> </p><p><strong>concatenated-stream-streams</strong> </p><p><strong>echo-stream make-echo-stream</strong> </p><p><strong>echo-stream-input-stream</strong> </p><p><strong>echo-stream-output-stream</strong> </p><p><strong>string-stream make-string-input-stream</strong> </p><p><span><b>with-input-from-string</b></span> </p><p><span><b>make-string-output-stream</b></span> </p><p><span><b>with-output-to-string</b></span> </p><p><span><b>get-output-stream-string</b></span> </p><p><strong>synonym-stream make-synonym-stream</strong> </p><p><span><b>synonym-stream-symbol</b></span> </p><p><strong>two-way-stream make-two-way-stream</strong> </p><p><strong>two-way-stream-input-stream</strong> </p><p><strong>two-way-stream-output-stream</strong></p>|<p></p>
<p><strong>Figure 215. Defined Names related to Specialized Streams</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2112-stream-variables">21.1.2 Stream Variables<a href="cb-b-stream-concepts.html#2112-stream-variables" class="hash-link" aria-label="Direct link to 21.1.2 Stream Variables" title="Direct link to 21.1.2 Stream Variables"></a></h2>
<!-- -->
<p><span><i>Variables</i></span> whose <span><i>values</i></span> must be <span><i>streams</i></span> are sometimes called <span><i>stream variables</i></span>.</p>
<p>Certain <span><i>stream variables</i></span> are defined by this specification to be the proper source of input or output in various <span><i>situations</i></span> where no specific <span><i>stream</i></span> has been specified instead. A complete list of such <em>standardized stream variables</em> appears in Figure 216. The consequences are undefined if at any time the <span><i>value</i></span> of any of these <span><i>variables</i></span> is not an <em>open stream</em>.</p>
<p>|<strong>Glossary Term Variable Name</strong>|</p>
<p>| :- |</p>
<p>|</p><p><em>debug I/O</em> <strong>*debug-io*</strong> </p><p><em>error output<span><i> </i></span></em>*error-output*** </p><p><em>query I/O</em> <strong>*query-io*</strong> </p><p><em>standard input<span><i> </i></span></em>*standard-input*** </p><p><em>standard output<span><i> </i></span></em>*standard-output*** </p><p><em>terminal I/O</em> <span><b>*terminal-io*</b></span> </p><p><em>trace output<span><i> </i></span></em>*trace-output***</p>|<p></p>
<p><strong>Figure 216. Standardized Stream Variables</strong></p>
<p>Note that, by convention, <em>standardized stream variables</em> have names ending in “-input*” if they must be <em>input streams</em>, ending in “-output*” if they must be <em>output streams</em>, or ending in “-io*” if they must be <em>bidirectional streams</em>.</p>
<p>User programs may <span><i>assign</i></span> or <span><i>bind</i></span> any <em>standardized stream variable</em> except <span><b>*terminal-io*</b></span>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2113-stream-arguments-to-standardized-functions">21.1.3 Stream Arguments to Standardized Functions<a href="cb-b-stream-concepts.html#2113-stream-arguments-to-standardized-functions" class="hash-link" aria-label="Direct link to 21.1.3 Stream Arguments to Standardized Functions" title="Direct link to 21.1.3 Stream Arguments to Standardized Functions"></a></h2>
<!-- -->
<p>The <span><i>operators</i></span> in Figure 217 accept <em>stream arguments</em> that might be either <span><i>open</i></span> or <em>closed streams</em>.</p>
<p>|</p><p><strong>broadcast-stream-streams file-author pathnamep</strong> </p><p><strong>close file-namestring probe-file</strong> </p><p><strong>compile-file file-write-date rename-file</strong> </p><p><strong>compile-file-pathname host-namestring streamp</strong> </p><p><strong>concatenated-stream-streams load synonym-stream-symbol delete-file logical-pathname translate-logical-pathname directory merge-pathnames translate-pathname directory-namestring namestring truename</strong> </p><p><strong>dribble open two-way-stream-input-stream echo-stream-input-stream open-stream-p two-way-stream-output-stream echo-stream-ouput-stream parse-namestring wild-pathname-p ed pathname with-open-file</strong> </p><p><strong>enough-namestring pathname-match-p</strong></p>|<p></p>
<p>| :- |</p>
<p><strong>Figure 217. Operators that accept either Open or Closed Streams</strong></p>
<p>The <span><i>operators</i></span> in Figure 218 accept <em>stream arguments</em> that must be <em>open streams</em>.</p>
<p>|</p><p><strong>clear-input output-stream-p read-char-no-hang clear-output peek-char read-delimited-list file-length pprint read-line</strong> </p><p><strong>file-position pprint-fill read-preserving-whitespace file-string-length pprint-indent stream-element-type finish-output pprint-linear stream-external-format force-output pprint-logical-block terpri</strong> </p><p><strong>format pprint-newline unread-char fresh-line pprint-tab with-open-stream get-output-stream-string pprint-tabular write</strong> </p><p><strong>input-stream-p prin1 write-byte</strong> </p><p><strong>interactive-stream-p princ write-char</strong> </p><p><strong>listen print write-line</strong> </p><p><strong>make-broadcast-stream print-object write-string make-concatenated-stream print-unreadable-object y-or-n-p</strong> </p><p><strong>make-echo-stream read yes-or-no-p</strong> </p><p><strong>make-synonym-stream read-byte</strong> </p><p><strong>make-two-way-stream read-char</strong></p>|<p></p>
<p>| - |</p>
<p><strong>Figure 218. Operators that accept Open Streams only</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2114-restrictions-on-composite-streams">21.1.4 Restrictions on Composite Streams<a href="cb-b-stream-concepts.html#2114-restrictions-on-composite-streams" class="hash-link" aria-label="Direct link to 21.1.4 Restrictions on Composite Streams" title="Direct link to 21.1.4 Restrictions on Composite Streams"></a></h2>
<!-- -->
<!-- -->
<p>The consequences are undefined if any <em>component</em> of a <span><i>composite stream</i></span> is <span><i>closed</i></span> before the <span><i>composite stream</i></span> is <span><i>closed</i></span>.</p>
<p>The consequences are undefined if the <span><i>synonym stream symbol</i></span> is not <span><i>bound</i></span> to an <em>open stream</em> from the time of the <span><i>synonym stream</i></span>s creation until the time it is <span><i>closed</i></span>.</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-21/cb-b-stream-concepts.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="../chap-20/ca-c-dictionary/truename_function.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">truename</div></a><a class="pagination-nav__link pagination-nav__link--next" href="../category/212-streams-dictionary.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">21.2 Streams Dictionary</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="cb-b-stream-concepts.html#2111-introduction-to-streams" class="table-of-contents__link toc-highlight">21.1.1 Introduction to Streams</a><ul><li><a href="cb-b-stream-concepts.html#21111-abstract-classifications-of-streams" class="table-of-contents__link toc-highlight">21.1.1.1 Abstract Classifications of Streams</a><ul><li><a href="cb-b-stream-concepts.html#211111-input" class="table-of-contents__link toc-highlight">21.1.1.1.1 Input</a></li><li><a href="cb-b-stream-concepts.html#211112-open-and-closed-streams" class="table-of-contents__link toc-highlight">21.1.1.1.2 Open and Closed Streams</a></li><li><a href="cb-b-stream-concepts.html#211113-interactive-streams" class="table-of-contents__link toc-highlight">21.1.1.1.3 Interactive Streams</a></li></ul></li><li><a href="cb-b-stream-concepts.html#21112-abstract-classifications-of-streams" class="table-of-contents__link toc-highlight">21.1.1.2 Abstract Classifications of Streams</a><ul><li><a href="cb-b-stream-concepts.html#211121-file-streams" class="table-of-contents__link toc-highlight">21.1.1.2.1 File Streams</a></li></ul></li><li><a href="cb-b-stream-concepts.html#21113-other-subclasses-of-stream" class="table-of-contents__link toc-highlight">21.1.1.3 Other Subclasses of Stream</a></li></ul></li><li><a href="cb-b-stream-concepts.html#2112-stream-variables" class="table-of-contents__link toc-highlight">21.1.2 Stream Variables</a></li><li><a href="cb-b-stream-concepts.html#2113-stream-arguments-to-standardized-functions" class="table-of-contents__link toc-highlight">21.1.3 Stream Arguments to Standardized Functions</a></li><li><a href="cb-b-stream-concepts.html#2114-restrictions-on-composite-streams" class="table-of-contents__link toc-highlight">21.1.4 Restrictions on Composite Streams</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a href="../../docs/tutorial.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Tutorial</a></li><li class="footer__item"><a href="../index.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Common Lisp Technical Reference</a></li><li class="footer__item"><a href="../../docs/help.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Help</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/common-lisp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/hhk46CE" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="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>