1
0
Fork 0
cl-sites/lisp-docs.github.io/cl-language-reference/chap-3/d-f-error-checking-in-function-calls.html

80 lines
No EOL
43 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-3/d-f-error-checking-in-function-calls" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.0.1">
<title data-rh="true">3.5 Error Checking in Function Calls | 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-3/d-f-error-checking-in-function-calls"><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="3.5 Error Checking in Function Calls | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="3.5.1 Argument Mismatch Detection"><meta data-rh="true" property="og:description" content="3.5.1 Argument Mismatch Detection"><link data-rh="true" rel="icon" href="../img/favicon.ico"><link data-rh="true" rel="canonical" href="d-f-error-checking-in-function-calls.html"><link data-rh="true" rel="alternate" href="d-f-error-checking-in-function-calls.html" hreflang="en"><link data-rh="true" rel="alternate" href="d-f-error-checking-in-function-calls.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="d-f-error-checking-in-function-calls.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"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="d-b-evaluation.html">3. Evaluation and Compilation</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="d-b-evaluation.html">3.1 Evaluation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="d-c-compilation.html">3.2 Compilation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="d-d-declarations.html">3.3 Declarations</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="d-e-lambda-lists.html">3.4 Lambda Lists</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="d-f-error-checking-in-function-calls.html">3.5 Error Checking in Function Calls</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="d-g-traversal-rules-and-side-effects.html">3.6 Traversal Rules and Side Effects</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="d-h-destructive-operations.html">3.7 Destructive Operations</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/38-evaluation-and-compilation-dictionary.html">3.8 Evaluation and Compilation Dictionary</a><button aria-label="Expand sidebar category &#x27;3.8 Evaluation and Compilation 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-4/e-b-introduction.html">4. Types and Classes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-5/f-b-generalized-reference.html">5. Data and Control Flow</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-6/g-b-the-loop-facility.html">6. Iteration</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-7/h-b-object-creation-and-initialization.html">7. Objects</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../category/81-structures-dictionary.html">8. Structures</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-9/j-b-condition-system-concepts.html">9. Conditions</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-10/ba-b-symbol-concepts.html">10. Symbols</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-11/bb-b-package-concepts.html">11. Packages</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-12/bc-b-number-concepts.html">12. Numbers</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-13/bd-b-character-concepts.html">13. Characters</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-14/be-b-cons-concepts.html">14. Conses</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-15/bf-b-array-concepts.html">15. Arrays</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-16/bg-b-string-concepts.html">16. Strings</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-17/bh-b-sequence-concepts.html">17. Sequences</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-18/bi-b-hash-table-concepts.html">18. Hash Tables</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-19/bj-b-overview-of-filenames.html">19. Filenames</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-20/ca-b-file-system-concepts.html">20. Files</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-21/cb-b-stream-concepts.html">21. Streams</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-22/cc-b-the-lisp-printer.html">22. Printer</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-23/cd-b-reader-concepts.html">23. Reader</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-24/ce-b-system-construction-concepts.html">24. System Construction</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-25/cf-b-the-external-environment.html">25. External Environment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../environments.html">26. Environments</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../meta-object-protocol.html">27. Meta Object Protocol</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../data-structures.html">28. Data Structures</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../portability/trivial-packages.html">29. Portability</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="../dictionary-entries.html">dictionary-entries</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="../chap-26/intro.html">Glossary</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="../index.html"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">3. Evaluation and Compilation</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">3.5 Error Checking in Function Calls</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>3.5 Error Checking in Function Calls</h1>
<!-- -->
<!-- -->
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="351-argument-mismatch-detection">3.5.1 Argument Mismatch Detection<a href="d-f-error-checking-in-function-calls.html#351-argument-mismatch-detection" class="hash-link" aria-label="Direct link to 3.5.1 Argument Mismatch Detection" title="Direct link to 3.5.1 Argument Mismatch Detection"></a></h2>
<!-- -->
<!-- -->
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3511-safe-and-unsafe-calls">3.5.1.1 Safe and Unsafe Calls<a href="d-f-error-checking-in-function-calls.html#3511-safe-and-unsafe-calls" class="hash-link" aria-label="Direct link to 3.5.1.1 Safe and Unsafe Calls" title="Direct link to 3.5.1.1 Safe and Unsafe Calls"></a></h3>
<!-- -->
<p>A <span><i>call</i></span> is a <span><i>safe call</i></span> if each of the following is either <em>safe code</em> or <span><i>system code</i></span> (other than <span><i>system code</i></span> that results from <span><i>macro expansion</i></span> of <span><i>programmer code</i></span>):</p>
<p><em></em> the <span><i>call</i></span>.</p>
<p><em></em> the definition of the <span><i>function</i></span> being <em>called</em>.</p>
<p><em></em> the point of <span><i>functional evaluation</i></span></p>
<p>The following special cases require some elaboration:</p>
<p><em></em> If the <span><i>function</i></span> being called is a <span><i>generic function</i></span>, it is considered <span><i>safe</i></span> if all of the following are <em>safe code</em> or <span><i>system code</i></span>:</p>
<p> its definition (if it was defined explicitly).</p>
<p> the <span><i>method</i></span> definitions for all <span><i>applicable methods</i></span>.</p>
<p> the definition of its <span><i>method combination</i></span>.</p>
<p><em></em> For the form (coerce <em>x</em> function), where <em>x</em> is a <span><i>lambda expression</i></span>, the value of the <span><i>optimize quality</i></span> <strong>safety</strong> in the global environment at the time the <span><b>coerce</b></span> is <em>executed</em> applies to the resulting <span><i>function</i></span>.</p>
<p><em></em> For a call to the <span><i>function</i></span> <span><b>ensure-generic-function</b></span>, the value of the <span><i>optimize quality</i></span> <strong>safety</strong> in the <span><i>environment object</i></span> passed as the <!-- -->:environment<!-- --> <span><i>argument</i></span> applies to the resulting <span><i>generic function</i></span>.</p>
<p><em></em> For a call to <span><b>compile</b></span> with a <span><i>lambda expression</i></span> as the <span><i>argument</i></span>, the value of the <span><i>optimize quality</i></span> <strong>safety</strong> in the <span><i>global environment</i></span> at the time <span><b>compile</b></span> is <em>called</em> applies to the resulting <span><i>compiled function</i></span>.</p>
<p><em></em> For a call to <span><b>compile</b></span> with only one argument, if the original definition of the <span><i>function</i></span> was <span><i>safe</i></span>, then the resulting <span><i>compiled function</i></span> must also be <span><i>safe</i></span>.</p>
<p><em></em> A <span><i>call</i></span> to a <span><i>method</i></span> by <span><b>call-next-method</b></span> must be considered <span><i>safe</i></span> if each of the following is <em>safe code</em> or <span><i>system code</i></span>:</p>
<p> the definition of the <span><i>generic function</i></span> (if it was defined explicitly).</p>
<p> the <span><i>method</i></span> definitions for all <span><i>applicable methods</i></span>.</p>
<p> the definition of the <span><i>method combination</i></span>.</p>
<p> the point of entry into the body of the <em>method defining form</em>, where the <span><i>binding</i></span> of <span><b>call-next-method</b></span> is established.</p>
<p> the point of <span><i>functional evaluation</i></span> of the name <span><b>call-next-method</b></span>.</p>
<p>An <span><i>unsafe call</i></span> is a <span><i>call</i></span> that is not a <span><i>safe call</i></span>.</p>
<p>The informal intent is that the <span><i>programmer</i></span> can rely on a <span><i>call</i></span> to be <span><i>safe</i></span>, even when <span><i>system code</i></span> is involved, if all reasonable steps have been taken to ensure that the <span><i>call</i></span> is <span><i>safe</i></span>. For example, if a <span><i>programmer</i></span> calls <span><b>mapcar</b></span> from <em>safe code</em> and supplies a <span><i>function</i></span> that was <em>compiled</em> as <span><i>safe</i></span>, the <span><i>implementation</i></span> is required to ensure that <span><b>mapcar</b></span> makes a <span><i>safe call</i></span> as well.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="35111-error-detection-time-in-safe-calls">3.5.1.1.1 Error Detection Time in Safe Calls<a href="d-f-error-checking-in-function-calls.html#35111-error-detection-time-in-safe-calls" class="hash-link" aria-label="Direct link to 3.5.1.1.1 Error Detection Time in Safe Calls" title="Direct link to 3.5.1.1.1 Error Detection Time in Safe Calls"></a></h4>
<!-- -->
<p>If an error is signaled in a <span><i>safe call</i></span>, the exact point of the <span><i>signal</i></span> is <span><i>implementation-dependent</i></span>. In particular, it might be signaled at compile time or at run time, and if signaled at run time, it might be prior to, during, or after <em>executing</em> the <span><i>call</i></span>. However, it is always prior to the execution of the body of the <span><i>function</i></span> being <em>called</em>.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3512-too-few-arguments">3.5.1.2 Too Few Arguments<a href="d-f-error-checking-in-function-calls.html#3512-too-few-arguments" class="hash-link" aria-label="Direct link to 3.5.1.2 Too Few Arguments" title="Direct link to 3.5.1.2 Too Few Arguments"></a></h3>
<!-- -->
<p>It is not permitted to supply too few <span><i>arguments</i></span> to a <span><i>function</i></span>. Too few arguments means fewer <span><i>arguments</i></span> than the number of <span><i>required parameters</i></span> for the <span><i>function</i></span>.</p>
<p>If this <span><i>situation</i></span> occurs in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled; and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3513-too-many-arguments">3.5.1.3 Too Many Arguments<a href="d-f-error-checking-in-function-calls.html#3513-too-many-arguments" class="hash-link" aria-label="Direct link to 3.5.1.3 Too Many Arguments" title="Direct link to 3.5.1.3 Too Many Arguments"></a></h3>
<!-- -->
<p>It is not permitted to supply too many <span><i>arguments</i></span> to a <span><i>function</i></span>. Too many arguments means more <span><i>arguments</i></span> than the number of <span><i>required parameters</i></span> plus the number of <span><i>optional parameters</i></span>; however, if the <span><i>function</i></span> uses <strong>&amp;rest</strong> or <strong>&amp;key</strong>, it is not possible for it to receive too many arguments.</p>
<p>If this <span><i>situation</i></span> occurs in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled; and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3514-unrecognized-keyword-arguments">3.5.1.4 Unrecognized Keyword Arguments<a href="d-f-error-checking-in-function-calls.html#3514-unrecognized-keyword-arguments" class="hash-link" aria-label="Direct link to 3.5.1.4 Unrecognized Keyword Arguments" title="Direct link to 3.5.1.4 Unrecognized Keyword Arguments"></a></h3>
<!-- -->
<p>It is not permitted to supply a keyword argument to a <span><i>function</i></span> using a name that is not recognized by that <span><i>function</i></span> unless keyword argument checking is suppressed as described in Section 3.4.1.4.1 (Suppressing Keyword Argument Checking).</p>
<p>If this <span><i>situation</i></span> occurs in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled; and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3515-invalid-keyword-arguments">3.5.1.5 Invalid Keyword Arguments<a href="d-f-error-checking-in-function-calls.html#3515-invalid-keyword-arguments" class="hash-link" aria-label="Direct link to 3.5.1.5 Invalid Keyword Arguments" title="Direct link to 3.5.1.5 Invalid Keyword Arguments"></a></h3>
<!-- -->
<p>It is not permitted to supply a keyword argument to a <span><i>function</i></span> using a name that is not a <span><i>symbol</i></span>.</p>
<p>If this <span><i>situation</i></span> occurs in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled unless keyword argument checking is suppressed as described in Section 3.4.1.4.1 (Suppressing Keyword Argument Checking); and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3516-odd-number-of-keyword-arguments">3.5.1.6 Odd Number of Keyword Arguments<a href="d-f-error-checking-in-function-calls.html#3516-odd-number-of-keyword-arguments" class="hash-link" aria-label="Direct link to 3.5.1.6 Odd Number of Keyword Arguments" title="Direct link to 3.5.1.6 Odd Number of Keyword Arguments"></a></h3>
<!-- -->
<p>An odd number of <span><i>arguments</i></span> must not be supplied for the <span><i>keyword parameters</i></span>.</p>
<p>If this <span><i>situation</i></span> occurs in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled unless keyword argument checking is suppressed as described in Section 3.4.1.4.1 (Suppressing Keyword Argument Checking); and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3517-destructuring-mismatch">3.5.1.7 Destructuring Mismatch<a href="d-f-error-checking-in-function-calls.html#3517-destructuring-mismatch" class="hash-link" aria-label="Direct link to 3.5.1.7 Destructuring Mismatch" title="Direct link to 3.5.1.7 Destructuring Mismatch"></a></h3>
<!-- -->
<p>When matching a <span><i>destructuring lambda list</i></span> against a <span><i>form</i></span>, the pattern and the <span><i>form</i></span> must have compatible <span><i>tree structure</i></span>, as described in Section 3.4.4 (Macro Lambda Lists).</p>
<p>Otherwise, in a <span><i>safe call</i></span>, an error of <span><i>type</i></span> <span><b>program-error</b></span> must be signaled; and in an <span><i>unsafe call</i></span> the <span><i>situation</i></span> has undefined consequences.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3518-errors-when-calling-a-next-method">3.5.1.8 Errors When Calling a Next Method<a href="d-f-error-checking-in-function-calls.html#3518-errors-when-calling-a-next-method" class="hash-link" aria-label="Direct link to 3.5.1.8 Errors When Calling a Next Method" title="Direct link to 3.5.1.8 Errors When Calling a Next Method"></a></h3>
<!-- -->
<!-- -->
<p>If <span><b>call-next-method</b></span> is called with <span><i>arguments</i></span>, the ordered set of <span><i>applicable methods</i></span> for the changed set of <span><i>arguments</i></span> for <span><b>call-next-method</b></span> must be the same as the ordered set of <span><i>applicable methods</i></span> for the original <span><i>arguments</i></span> to the <span><i>generic function</i></span>, or else an error should be signaled.</p>
<p>The comparison between the set of methods applicable to the new arguments and the set applicable to the original arguments is insensitive to order differences among methods with the same specializers.</p>
<p>If <span><b>call-next-method</b></span> is called with <span><i>arguments</i></span> that specify a different ordered set of <span><i>applicable</i></span> methods and there is no <span><i>next method</i></span> available, the test for different methods and the associated error signaling (when present) takes precedence over calling <span><b>no-next-method</b></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-3/d-f-error-checking-in-function-calls.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="d-e-lambda-lists.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">3.4 Lambda Lists</div></a><a class="pagination-nav__link pagination-nav__link--next" href="d-g-traversal-rules-and-side-effects.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">3.6 Traversal Rules and Side Effects</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="d-f-error-checking-in-function-calls.html#351-argument-mismatch-detection" class="table-of-contents__link toc-highlight">3.5.1 Argument Mismatch Detection</a><ul><li><a href="d-f-error-checking-in-function-calls.html#3511-safe-and-unsafe-calls" class="table-of-contents__link toc-highlight">3.5.1.1 Safe and Unsafe Calls</a><ul><li><a href="d-f-error-checking-in-function-calls.html#35111-error-detection-time-in-safe-calls" class="table-of-contents__link toc-highlight">3.5.1.1.1 Error Detection Time in Safe Calls</a></li></ul></li><li><a href="d-f-error-checking-in-function-calls.html#3512-too-few-arguments" class="table-of-contents__link toc-highlight">3.5.1.2 Too Few Arguments</a></li><li><a href="d-f-error-checking-in-function-calls.html#3513-too-many-arguments" class="table-of-contents__link toc-highlight">3.5.1.3 Too Many Arguments</a></li><li><a href="d-f-error-checking-in-function-calls.html#3514-unrecognized-keyword-arguments" class="table-of-contents__link toc-highlight">3.5.1.4 Unrecognized Keyword Arguments</a></li><li><a href="d-f-error-checking-in-function-calls.html#3515-invalid-keyword-arguments" class="table-of-contents__link toc-highlight">3.5.1.5 Invalid Keyword Arguments</a></li><li><a href="d-f-error-checking-in-function-calls.html#3516-odd-number-of-keyword-arguments" class="table-of-contents__link toc-highlight">3.5.1.6 Odd Number of Keyword Arguments</a></li><li><a href="d-f-error-checking-in-function-calls.html#3517-destructuring-mismatch" class="table-of-contents__link toc-highlight">3.5.1.7 Destructuring Mismatch</a></li><li><a href="d-f-error-checking-in-function-calls.html#3518-errors-when-calling-a-next-method" class="table-of-contents__link toc-highlight">3.5.1.8 Errors When Calling a Next Method</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>