1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/chap-9/j-c-dictionary/restart-case_macro.html

105 lines
73 KiB
HTML
Raw Normal View History

2024-03-13 23:00:32 +01:00
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-chap-9/j-c-dictionary/restart-case_macro" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">restart-case | 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-9/j-c-dictionary/restart-case_macro"><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="restart-case | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="Expanded Reference: restart-case"><meta data-rh="true" property="og:description" content="Expanded Reference: restart-case"><link data-rh="true" rel="icon" href="../../img/favicon.ico"><link data-rh="true" rel="canonical" href="restart-case_macro.html"><link data-rh="true" rel="alternate" href="restart-case_macro.html" hreflang="en"><link data-rh="true" rel="alternate" href="restart-case_macro.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="restart-case_macro.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,
<!-- -->
<!-- -->
<p><strong>restart-case</strong> <span><i>Macro</i></span></p>
<p><strong>Syntax:</strong></p>
<p><span><b>restart-case</b></span> <em>restartable-form {↓clause} → {result}</em>*</p>
<p><em>clause::</em>=(<em>case-name lambda-list</em></p>
<p>[[ <!-- -->:interactive<!-- --> <em>interactive-expression |</em> <!-- -->:report<!-- --> <em>report-expression |</em> <!-- -->:test<!-- --> <em>test-expression</em> ]] <span><i>{declaration}</i></span>* <span><i>{form}</i></span>*)</p>
<p><strong>Arguments and Values:</strong></p>
<p><em>restartable-form</em>—a <span><i>form</i></span>.</p>
<p><em>case-name</em>—a <span><i>symbol</i></span> or <span><b>nil</b></span>.</p>
<p><em>lambda-list</em>—an <span><i>ordinary lambda list</i></span>.</p>
<p><em>interactive-expression</em>—a <span><i>symbol</i></span> or a <span><i>lambda expression</i></span>.</p>
<p><em>report-expression</em>—a <span><i>string</i></span>, a <span><i>symbol</i></span>, or a <span><i>lambda expression</i></span>.</p>
<p><em>test-expression</em>—a <span><i>symbol</i></span> or a <span><i>lambda expression</i></span>.</p>
<p><span><i>declaration</i></span>—a <span><b>declare</b></span> <span><i>expression</i></span>; not evaluated.</p>
<p><span><i>form</i></span>—a <span><i>form</i></span>.</p>
<p><em>results</em>—the <span><i>values</i></span> resulting from the <span><i>evaluation</i></span> of <em>restartable-form</em>, or the <span><i>values</i></span> returned by the last <span><i>form</i></span> executed in a chosen <em>clause</em>, or <span><b>nil</b></span>.</p>
<p><strong>Description:</strong></p>
<p><span><b>restart-case</b></span> evaluates <em>restartable-form</em> in a <span><i>dynamic environment</i></span> where the clauses have special meanings as points to which control may be transferred. If <em>restartable-form</em> finishes executing and returns any values, all values returned are returned by <span><b>restart-case</b></span> and processing has completed. While <em>restartable-form</em> is executing, any code may transfer control to one of the clauses (see</p>
<span><b>restart-case</b></span>
<p><span><b>invoke-restart</b></span>). If a transfer occurs, the forms in the body of that clause is evaluated and any values returned by the last such form are returned by <span><b>restart-case</b></span>. In this case, the dynamic state is unwound appropriately (so that the restarts established around the <em>restartable-form</em> are no longer active) prior to execution of the clause.</p>
<p>If there are no <span><i>forms</i></span> in a selected clause, <span><b>restart-case</b></span> returns <span><b>nil</b></span>.</p>
<p>If <em>case-name</em> is a <span><i>symbol</i></span>, it names this restart.</p>
<p>It is possible to have more than one clause use the same <em>case-name</em>. In this case, the first clause with that name is found by <span><b>find-restart</b></span>. The other clauses are accessible using <span><b>compute-restarts</b></span>.</p>
<p>Each <em>arglist</em> is an <span><i>ordinary lambda list</i></span> to be bound during the execution of its corresponding <span><i>forms</i></span>. These parameters are used by the <span><b>restart-case</b></span> clause to receive any necessary data from a call to <span><b>invoke-restart</b></span>.</p>
<p>By default, <span><b>invoke-restart-interactively</b></span> passes no arguments and all arguments must be optional in order to accomodate interactive restarting. However, the arguments need not be optional if the <!-- -->:interactive<!-- --> keyword has been used to inform <span><b>invoke-restart-interactively</b></span> about how to compute a proper argument list.</p>
<p><span><i>Keyword</i></span> options have the following meaning.</p>
<p>:interactive</p>
<p>The <span><i>value</i></span> supplied by <!-- -->:interactive<!-- --> <span><i>value</i></span> must be a suitable argument to <span><b>function</b></span>. (function <span><i>value</i></span>) is evaluated in the current lexical environment. It should return a <span><i>function</i></span> of no arguments which returns arguments to be used by <span><b>invoke-restart-interactively</b></span> when it is invoked. <span><b>invoke-restart-interactively</b></span> is called in the dynamic environment available prior to any restart attempt, and uses <em>query I/O</em> for user interaction.</p>
<p>If a restart is invoked interactively but no <!-- -->:interactive<!-- --> option was supplied, the argument list used in the invocation is the empty list.</p>
<p>:report</p>
<p>If the <span><i>value</i></span> supplied by <!-- -->:report<!-- --> <span><i>value</i></span> is a <span><i>lambda expression</i></span> or a <span><i>symbol</i></span>, it must be acceptable to <span><b>function</b></span>. (function <span><i>value</i></span>) is evaluated in the current lexical environment. It should return a <span><i>function</i></span> of one argument, a <span><i>stream</i></span>, which prints on the <span><i>stream</i></span> a description of the restart. This <span><i>function</i></span> is called whenever the restart is printed while <span><b>*print-escape*</b></span> is <span><b>nil</b></span>.</p>
<p>If <span><i>value</i></span> is a <span><i>string</i></span>, it is a shorthand for</p>
<p>(lambda (stream) (write-string value stream))</p>
<p>If a named restart is asked to report but no report information has been supplied, the name of the restart is used in generating default report text.</p>
<span><b>restart-case</b></span>
<p>When <span><b>*print-escape*</b></span> is <span><b>nil</b></span>, the printer uses the report information for a restart. For example, a debugger might announce the action of typing a “continue” command by:</p>
<p>(format t &quot;~&amp;~S ~A~%&quot; <!-- -->:continue<!-- --> some-restart)</p>
<p>which might then display as something like:</p>
<p>:CONTINUE<!-- --> Return to command level</p>
<p>The consequences are unspecified if an unnamed restart is specified but no <!-- -->:report<!-- --> option is provided.</p>
<p>:test</p>
<p>The <span><i>value</i></span> supplied by <!-- -->:test<!-- --> <span><i>value</i></span> must be a suitable argument to <span><b>function</b></span>.</p>
<p>(function <span><i>value</i></span>) is evaluated in the current lexical environment. It should return a <span><i>function</i></span> of one <span><i>argument</i></span>, the <span><i>condition</i></span>, that returns <span><i>true</i></span> if the restart is to be considered visible.</p>
<p>The default for this option is equivalent to (lambda (c) (declare (ignore c)) t).</p>
<p>If the <em>restartable-form</em> is a <span><i>list</i></span> whose <span><i>car</i></span> is any of the <span><i>symbols</i></span> <span><b>signal</b></span>, <span><b>error</b></span>, <span><b>cerror</b></span>, or <span><b>warn</b></span> (or is a <span><i>macro form</i></span> which macroexpands into such a <span><i>list</i></span>), then <span><b>with-condition-restarts</b></span> is used implicitly to associate the indicated <span><i>restarts</i></span> with the <span><i>condition</i></span> to be signaled.</p>
<p><strong>Examples:</strong></p>
<div class="language-lisp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-lisp codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">(</span><span class="token car">restart-case</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">handler-bind</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">error</span><span class="token plain"> #</span><span class="token punctuation" style="color:#393A34">(</span><span class="token lambda keyword" style="color:#00009f">lambda</span><span class="token lambda"> </span><span class="token lambda punctuation" style="color:#393A34">(</span><span class="token lambda arguments argument variable" style="color:#36acaa">c</span><span class="token lambda punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token declare keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">ignore</span><span class="token plain"> condition</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">invoke-restart</span><span class="token plain"> my-restart </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">error</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;Foo.&quot;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">my-restart</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">&amp;optional v</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> v</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">7</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">define-condition</span><span class="token plain"> food-error </span><span class="token punctua
<p><strong>See Also:</strong></p>
<p><span><b>restart-bind</b></span>, <span><b>with-simple-restart</b></span>.</p>
<p><strong>Notes:</strong></p>
<p>(restart-case <span><i>expression</i></span></p>
<p>(<em>name1 arglist1</em> ...<em>options1</em>... . <em>body1</em>)</p>
<p>(<em>name2 arglist2</em> ...<em>options2</em>... . <em>body2</em>))</p>
<p>is essentially equivalent to</p>
<p>(block #1=#<!-- -->:g0001</p>
<p>(let ((#2=#<!-- -->:g0002<!-- --> nil))</p>
<p>(tagbody</p>
<p>(restart-bind ((name1 #(lambda (&amp;rest temp)</p>
<p>(setq #2# temp)</p>
<p>(go #3=#<!-- -->:g0003<!-- -->))</p>
<p>...<em>slightly-transformed-options1</em>...)</p>
<p>(name2 #(lambda (&amp;rest temp)</p>
<p>(setq #2# temp)</p>
<p>(go #4=#<!-- -->:g0004<!-- -->))</p>
<p>...<em>slightly-transformed-options2</em>...))</p>
<p>(return-from #1# <span><i>expression</i></span>))</p>
<p>#3# (return-from #1#</p>
<p>(apply #(lambda <em>arglist1</em> . <em>body1</em>) #2#))</p>
<p>#4# (return-from #1#</p>
<p>(apply #(lambda <em>arglist2</em> . <em>body2</em>) #2#)))))</p>
<p>Unnamed restarts are generally only useful interactively and an interactive option which has no description is of little value. Implementations are encouraged to warn if an unnamed restart is used and no report information is provided at compilation time. At runtime, this error might be noticed when entering the debugger. Since signaling an error would probably cause recursive entry into the debugger (causing yet another recursive error, etc.) it is suggested that the debugger print some indication of such problems when they occur but not actually signal errors.</p>
<p>(restart-case (signal fred)</p>
<p>(a ...)</p>
<p>(b ...))</p>
<p><em></em></p>
<p>(restart-case</p>
<p>(with-condition-restarts fred</p>
<p>(list (find-restart a)</p>
<p>(find-restart b))</p>
<p>(signal fred))</p>
<p>(a ...)</p>
<p>(b ...))</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="expanded-reference-restart-case">Expanded Reference: restart-case<a href="restart-case_macro.html#expanded-reference-restart-case" class="hash-link" aria-label="Direct link to Expanded Reference: restart-case" title="Direct link to Expanded Reference: restart-case"></a></h2>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>TODO: Please contribute to this page by adding explanations and examples</p></div></div>
<div class="language-lisp codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-lisp codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">(</span><span class="token car">restart-case</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/lisp-docs/cl-language-reference/tree/main/docs/chap-9/j-c-dictionary/restart-case_macro.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="restart-bind_macro.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">restart-bind</div></a><a class="pagination-nav__link pagination-nav__link--next" href="restart-name_function.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">restart-name</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="restart-case_macro.html#expanded-reference-restart-case" class="table-of-contents__link toc-highlight">Expanded Reference: restart-case</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="_bla
</body>
</html>