61 lines
50 KiB
HTML
61 lines
50 KiB
HTML
|
<!doctype html>
|
|||
|
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-chap-17/bh-d-dictionary/remove-duplicates_delete-duplicates_function" data-has-hydrated="false">
|
|||
|
<head>
|
|||
|
<meta charset="UTF-8">
|
|||
|
<meta name="generator" content="Docusaurus v3.0.1">
|
|||
|
<title data-rh="true">remove-duplicates, delete-duplicates | 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-17/bh-d-dictionary/remove-duplicates_delete-duplicates_function"><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="remove-duplicates, delete-duplicates | Common Lisp (New) Language Reference"><meta data-rh="true" name="description" content="Expanded Reference: remove-duplicates, delete-duplicates"><meta data-rh="true" property="og:description" content="Expanded Reference: remove-duplicates, delete-duplicates"><link data-rh="true" rel="icon" href="../../img/favicon.ico"><link data-rh="true" rel="canonical" href="remove-duplicates_delete-duplicates_function.html"><link data-rh="true" rel="alternate" href="remove-duplicates_delete-duplicates_function.html" hreflang="en"><link data-rh="true" rel="alternate" href="remove-duplicates_delete-duplicates_function.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="remove-duplicates_delete-duplicates_function.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
|
|||
|
<!-- -->
|
|||
|
<!-- -->
|
|||
|
<p><strong>remove-duplicates, delete-duplicates</strong> <span><i>Function</i></span></p>
|
|||
|
<p><strong>Syntax:</strong></p>
|
|||
|
<p><span><b>remove-duplicates</b></span> <em>sequence</em> &key <em>from-end test test-not</em></p>
|
|||
|
<p><em>start end key</em></p>
|
|||
|
<p>→ result-sequence</p>
|
|||
|
<p><span><b>delete-duplicates</b></span> <em>sequence</em> &key <em>from-end test test-not</em></p>
|
|||
|
<p><em>start end key</em></p>
|
|||
|
<p>→ result-sequence</p>
|
|||
|
<p><strong>Arguments and Values:</strong></p>
|
|||
|
<p><em>sequence</em>—a <span><i>proper sequence</i></span>.</p>
|
|||
|
<p><em>from-end</em>—a <span><i>generalized boolean</i></span>. The default is <span><i>false</i></span>.</p>
|
|||
|
<p><em>test</em>—a <span><i>designator</i></span> for a <span><i>function</i></span> of two <span><i>arguments</i></span> that returns a <span><i>generalized boolean</i></span>. <em>test-not<span><i>—a </i></span>designator</em> for a <span><i>function</i></span> of two <span><i>arguments</i></span> that returns a <span><i>generalized boolean</i></span>.</p>
|
|||
|
<p><em>start</em>, <em>end</em>—<span><i>bounding index designators</i></span> of <em>sequence</em>. The defaults for <em>start</em> and <em>end</em> are 0 and <span><b>nil</b></span>, respectively.</p>
|
|||
|
<p><span><i>key</i></span>—a <span><i>designator</i></span> for a <span><i>function</i></span> of one argument, or <span><b>nil</b></span>.</p>
|
|||
|
<p><strong>remove-duplicates, delete-duplicates</strong></p>
|
|||
|
<p><em>result-sequence</em>—a <em>sequence</em>.</p>
|
|||
|
<p><strong>Description:</strong></p>
|
|||
|
<p><span><b>remove-duplicates</b></span> returns a modified copy of <em>sequence</em> from which any element that matches another element occurring in <em>sequence</em> has been removed.</p>
|
|||
|
<p>If <em>sequence</em> is a <span><i>vector</i></span> , the result is a <span><i>vector</i></span> that has the same <span><i>actual array element type</i></span> as <em>sequence</em>. If <em>sequence</em> is a <span><i>list</i></span>, the result is a <span><i>list</i></span>.</p>
|
|||
|
<p><span><b>delete-duplicates</b></span> is like <span><b>remove-duplicates</b></span>, but <span><b>delete-duplicates</b></span> may modify <em>sequence</em>.</p>
|
|||
|
<p>The elements of <em>sequence</em> are compared <span><i>pairwise</i></span>, and if any two match, then the one occurring earlier in <em>sequence</em> is discarded, unless <em>from-end</em> is <span><i>true</i></span>, in which case the one later in <em>sequence</em> is discarded.</p>
|
|||
|
<p><span><b>remove-duplicates</b></span> and <span><b>delete-duplicates</b></span> return a <em>sequence</em> of the same <span><i>type</i></span> as <em>sequence</em> with enough elements removed so that no two of the remaining elements match. The order of the elements remaining in the result is the same as the order in which they appear in <em>sequence</em>.</p>
|
|||
|
<p><span><b>remove-duplicates</b></span> returns a <em>sequence</em> that may share with <em>sequence</em> or may be <span><i>identical</i></span> to <em>sequence</em> if no elements need to be removed.</p>
|
|||
|
<p><span><b>delete-duplicates</b></span>, when <em>sequence</em> is a <span><i>list</i></span>, is permitted to <span><b>setf</b></span> any part, <span><b>car</b></span> or <span><b>cdr</b></span>, of the top-level list structure in that <em>sequence</em>. When <em>sequence</em> is a <span><i>vector</i></span> , <span><b>delete-duplicates</b></span> is permitted to change the dimensions of the <span><i>vector</i></span> and to slide its elements into new positions without permuting them to produce the resulting <span><i>vector</i></span> .</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">remove-duplicates</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"aBcDAbCd"</span><span class="token plain"> </span><span class="token lisp-property property" style="color:#36acaa">:test</span><span class="token plain"> #’char-equal </span><span class="token lisp-property property" style="color:#36acaa">:from-end</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">t</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> → </span><span class="token string" style="color:#e3116c">"aBcD"</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">remove-duplicates</span><span class="token plain"> ’</span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">a</span><span class="token plain"> b c b d d e</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> → </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">A</span><span class="token plain"> C B D E</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">remove-duplicates</span><span class="token plain"> ’</span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">a</span><span class="token plain"> b c b d d e</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token lisp-property property" style="color:#36acaa">:from-end</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">t</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> → </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">A</span><span class="token plain"> B C D E</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">remove-duplicates</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 car">foo</span><span class="token plain"> #\a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">bar</span><span class="token plain"> #\%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token car">baz</span><span class="token plain"> #\A</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 lisp-property property" style="color:#36acaa">:te
|
|||
|
<p><strong>Side Effects:</strong></p>
|
|||
|
<p><span><b>delete-duplicates</b></span> might destructively modify <em>sequence</em>.</p>
|
|||
|
<p><strong>Exceptional Situations:</strong></p>
|
|||
|
<p>Should signal an error of <span><i>type</i></span> <span><b>type-error</b></span> if <em>sequence</em> is not a <span><i>proper sequence</i></span>.</p>
|
|||
|
<p><strong>See Also:</strong></p>
|
|||
|
<p>Section 3.2.1 (Compiler Terminology), Section 3.6 (Traversal Rules and Side Effects)</p>
|
|||
|
<p><strong>remove-duplicates, delete-duplicates</strong></p>
|
|||
|
<p><strong>Notes:</strong></p>
|
|||
|
<p>If <em>sequence</em> is a <span><i>vector</i></span> , the result might or might not be simple, and might or might not be <span><i>identical</i></span> to <em>sequence</em>.</p>
|
|||
|
<p>The <!-- -->:test-not<!-- --> <span><i>argument</i></span> is deprecated.</p>
|
|||
|
<p>These functions are useful for converting <em>sequence</em> into a canonical form suitable for representing a set.</p>
|
|||
|
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="expanded-reference-remove-duplicates-delete-duplicates">Expanded Reference: remove-duplicates, delete-duplicates<a href="remove-duplicates_delete-duplicates_function.html#expanded-reference-remove-duplicates-delete-duplicates" class="hash-link" aria-label="Direct link to Expanded Reference: remove-duplicates, delete-duplicates" title="Direct link to Expanded Reference: remove-duplicates, delete-duplicates"></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">remove-duplicates</span><span class="token plain">, delete-duplicates </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-17/bh-d-dictionary/remove-duplicates_delete-duplicates_function.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="reduce_function.html"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">reduce</div></a><a class="pagination-nav__link pagination-nav__link--next" href="remove_remove-if_remove-if-not_delete_delete-if_delete-if-not_function.html"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">remove, remove-if, remove-if-not, delete, delete-if, delete-if-not</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="remove-duplicates_delete-duplicates_function.html#expanded-reference-remove-duplicates-delete-duplicates" class="table-of-contents__link toc-highlight">Expanded Reference: remove-duplicates, delete-duplicates</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="curren
|
|||
|
</body>
|
|||
|
</html>
|