CINXE.COM
Common Lisp - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Common Lisp - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"e4fe3500-a884-4433-9caa-5e100116d197","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Common_Lisp","wgTitle":"Common Lisp","wgCurRevisionId":1236270901,"wgRevisionId":1236270901,"wgArticleId":6068,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Webarchive template wayback links","CS1 errors: missing periodical","Articles with short description","Short description is different from Wikidata","Use mdy dates from April 2020","All articles with unsourced statements","Articles with unsourced statements from May 2011","Articles needing additional references from July 2018","All articles needing additional references","Articles with example Lisp (programming language) code","Common Lisp","Class-based programming languages", "Cross-platform free software","Cross-platform software","Dynamic programming languages","Dynamically typed programming languages","Extensible syntax programming languages","Functional languages","Lisp (programming language)","Lisp programming language family","Multi-paradigm programming languages","Object-oriented programming languages","Procedural programming languages","Programming languages created in 1984"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Common_Lisp","wgRelevantArticleId":6068,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"}, "wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":100000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q849146","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles": "ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession", "wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/1200px-Lisp_logo.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/800px-Lisp_logo.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="800"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/640px-Lisp_logo.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="640"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Common Lisp - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Common_Lisp"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Common_Lisp&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Common_Lisp"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Common_Lisp rootpage-Common_Lisp skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Common+Lisp" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Common+Lisp" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Common+Lisp" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Common+Lisp" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Syntax" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Syntax"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Syntax</span> </div> </a> <ul id="toc-Syntax-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Data_types" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Data_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Data types</span> </div> </a> <button aria-controls="toc-Data_types-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Data types subsection</span> </button> <ul id="toc-Data_types-sublist" class="vector-toc-list"> <li id="toc-Scalar_types" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Scalar_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Scalar types</span> </div> </a> <ul id="toc-Scalar_types-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Data_structures" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Data_structures"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Data structures</span> </div> </a> <ul id="toc-Data_structures-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Functions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Functions</span> </div> </a> <ul id="toc-Functions-sublist" class="vector-toc-list"> <li id="toc-Defining_functions" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Defining_functions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.1</span> <span>Defining functions</span> </div> </a> <ul id="toc-Defining_functions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Defining_generic_functions_and_methods" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Defining_generic_functions_and_methods"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.2</span> <span>Defining generic functions and methods</span> </div> </a> <ul id="toc-Defining_generic_functions_and_methods-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-The_function_namespace" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#The_function_namespace"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.3</span> <span>The function namespace</span> </div> </a> <ul id="toc-The_function_namespace-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Multiple_return_values" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Multiple_return_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.4</span> <span>Multiple return values</span> </div> </a> <ul id="toc-Multiple_return_values-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Other_types" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Other_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span> <span>Other types</span> </div> </a> <ul id="toc-Other_types-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Scope" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Scope"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Scope</span> </div> </a> <button aria-controls="toc-Scope-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Scope subsection</span> </button> <ul id="toc-Scope-sublist" class="vector-toc-list"> <li id="toc-Determiners_of_scope" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Determiners_of_scope"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Determiners of scope</span> </div> </a> <ul id="toc-Determiners_of_scope-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kinds_of_environment" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kinds_of_environment"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Kinds of environment</span> </div> </a> <ul id="toc-Kinds_of_environment-sublist" class="vector-toc-list"> <li id="toc-Global" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Global"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2.1</span> <span>Global</span> </div> </a> <ul id="toc-Global-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dynamic" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Dynamic"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2.2</span> <span>Dynamic</span> </div> </a> <ul id="toc-Dynamic-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Lexical" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Lexical"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2.3</span> <span>Lexical</span> </div> </a> <ul id="toc-Lexical-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Macros" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Macros"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Macros</span> </div> </a> <button aria-controls="toc-Macros-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Macros subsection</span> </button> <ul id="toc-Macros-sublist" class="vector-toc-list"> <li id="toc-Example_using_a_macro_to_define_a_new_control_structure" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Example_using_a_macro_to_define_a_new_control_structure"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Example using a macro to define a new control structure</span> </div> </a> <ul id="toc-Example_using_a_macro_to_define_a_new_control_structure-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Variable_capture_and_shadowing" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Variable_capture_and_shadowing"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Variable capture and shadowing</span> </div> </a> <ul id="toc-Variable_capture_and_shadowing-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Condition_system" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Condition_system"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Condition system</span> </div> </a> <ul id="toc-Condition_system-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Common_Lisp_Object_System_(CLOS)" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Common_Lisp_Object_System_(CLOS)"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Common Lisp Object System (CLOS)</span> </div> </a> <ul id="toc-Common_Lisp_Object_System_(CLOS)-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Compiler_and_interpreter" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Compiler_and_interpreter"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Compiler and interpreter</span> </div> </a> <ul id="toc-Compiler_and_interpreter-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_examples" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Code_examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Code examples</span> </div> </a> <button aria-controls="toc-Code_examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Code examples subsection</span> </button> <ul id="toc-Code_examples-sublist" class="vector-toc-list"> <li id="toc-Birthday_paradox" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Birthday_paradox"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.1</span> <span>Birthday paradox</span> </div> </a> <ul id="toc-Birthday_paradox-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Sorting_a_list_of_person_objects" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Sorting_a_list_of_person_objects"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.2</span> <span>Sorting a list of person objects</span> </div> </a> <ul id="toc-Sorting_a_list_of_person_objects-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Exponentiating_by_squaring" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Exponentiating_by_squaring"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.3</span> <span>Exponentiating by squaring</span> </div> </a> <ul id="toc-Exponentiating_by_squaring-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Find_the_list_of_available_shells" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Find_the_list_of_available_shells"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.4</span> <span>Find the list of available shells</span> </div> </a> <ul id="toc-Find_the_list_of_available_shells-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Comparison_with_other_Lisps" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Comparison_with_other_Lisps"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Comparison with other Lisps</span> </div> </a> <ul id="toc-Comparison_with_other_Lisps-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Implementations" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Implementations</span> </div> </a> <button aria-controls="toc-Implementations-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Implementations subsection</span> </button> <ul id="toc-Implementations-sublist" class="vector-toc-list"> <li id="toc-List_of_implementations" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#List_of_implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">11.1</span> <span>List of implementations</span> </div> </a> <ul id="toc-List_of_implementations-sublist" class="vector-toc-list"> <li id="toc-Commercial_implementations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Commercial_implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">11.1.1</span> <span>Commercial implementations</span> </div> </a> <ul id="toc-Commercial_implementations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Freely_redistributable_implementations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Freely_redistributable_implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">11.1.2</span> <span>Freely redistributable implementations</span> </div> </a> <ul id="toc-Freely_redistributable_implementations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Other_implementations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Other_implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">11.1.3</span> <span>Other implementations</span> </div> </a> <ul id="toc-Other_implementations-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Applications" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Applications"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>Applications</span> </div> </a> <ul id="toc-Applications-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">13</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">14</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bibliography" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Bibliography"> <div class="vector-toc-text"> <span class="vector-toc-numb">15</span> <span>Bibliography</span> </div> </a> <ul id="toc-Bibliography-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">16</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Common Lisp</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 29 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-29" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">29 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%83%D9%88%D9%85%D9%88%D9%86_%D9%84%D9%8A%D8%B3%D8%A8" title="كومون ليسب – Arabic" lang="ar" hreflang="ar" data-title="كومون ليسب" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Bulgarian" lang="bg" hreflang="bg" data-title="Common Lisp" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Czech" lang="cs" hreflang="cs" data-title="Common Lisp" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Danish" lang="da" hreflang="da" data-title="Common Lisp" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – German" lang="de" hreflang="de" data-title="Common Lisp" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Estonian" lang="et" hreflang="et" data-title="Common Lisp" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Spanish" lang="es" hreflang="es" data-title="Common Lisp" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%84%DB%8C%D8%B3%D9%BE_%D9%85%D8%B9%D9%85%D9%88%D9%84%DB%8C" title="لیسپ معمولی – Persian" lang="fa" hreflang="fa" data-title="لیسپ معمولی" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – French" lang="fr" hreflang="fr" data-title="Common Lisp" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Galician" lang="gl" hreflang="gl" data-title="Common Lisp" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%A8%BC_%EB%A6%AC%EC%8A%A4%ED%94%84" title="커먼 리스프 – Korean" lang="ko" hreflang="ko" data-title="커먼 리스프" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Armenian" lang="hy" hreflang="hy" data-title="Common Lisp" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Croatian" lang="hr" hreflang="hr" data-title="Common Lisp" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Icelandic" lang="is" hreflang="is" data-title="Common Lisp" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Common_LISP" title="Common LISP – Italian" lang="it" hreflang="it" data-title="Common LISP" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Hebrew" lang="he" hreflang="he" data-title="Common Lisp" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Hungarian" lang="hu" hreflang="hu" data-title="Common Lisp" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Japanese" lang="ja" hreflang="ja" data-title="Common Lisp" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Common Lisp" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Polish" lang="pl" hreflang="pl" data-title="Common Lisp" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Portuguese" lang="pt" hreflang="pt" data-title="Common Lisp" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Romanian" lang="ro" hreflang="ro" data-title="Common Lisp" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Russian" lang="ru" hreflang="ru" data-title="Common Lisp" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Common Lisp" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Finnish" lang="fi" hreflang="fi" data-title="Common Lisp" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Swedish" lang="sv" hreflang="sv" data-title="Common Lisp" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Ukrainian" lang="uk" hreflang="uk" data-title="Common Lisp" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Cantonese" lang="yue" hreflang="yue" data-title="Common Lisp" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Common_Lisp" title="Common Lisp – Chinese" lang="zh" hreflang="zh" data-title="Common Lisp" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q849146#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Common_Lisp" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Common_Lisp" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Common_Lisp"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Common_Lisp&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Common_Lisp&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Common_Lisp"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Common_Lisp&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Common_Lisp&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Common_Lisp" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Common_Lisp" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Common_Lisp&oldid=1236270901" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Common_Lisp&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Common_Lisp&id=1236270901&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCommon_Lisp"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FCommon_Lisp"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Common_Lisp&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Common_Lisp&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Common_Lisp" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/Common_Lisp" hreflang="en"><span>Wikibooks</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q849146" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Programming language standard</div> <p class="mw-empty-elt"> </p> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox vevent"><caption class="infobox-title summary">Common Lisp</caption><tbody><tr><td colspan="2" class="infobox-image"><span typeof="mw:File"><a href="/wiki/File:Lisp_logo.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/120px-Lisp_logo.svg.png" decoding="async" width="120" height="120" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/180px-Lisp_logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/48/Lisp_logo.svg/240px-Lisp_logo.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="/wiki/Multi-paradigm_programming_language" class="mw-redirect" title="Multi-paradigm programming language">Multi-paradigm</a>: <a href="/wiki/Procedural_programming" title="Procedural programming">procedural</a>, <a href="/wiki/Functional_programming" title="Functional programming">functional</a>, <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a>, <a href="/wiki/Metaprogramming" title="Metaprogramming">meta</a>, <a href="/wiki/Reflective_programming" title="Reflective programming">reflective</a>, <a href="/wiki/Generic_programming" title="Generic programming">generic</a></td></tr><tr><th scope="row" class="infobox-label">Family</th><td class="infobox-data"><a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_design" title="Software design">Designed by</a></th><td class="infobox-data"><a href="/wiki/Scott_Fahlman" title="Scott Fahlman">Scott Fahlman</a>, <a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a>, <a href="/wiki/David_A._Moon" title="David A. Moon">David A. Moon</a>, <a href="/wiki/Kent_Pitman" title="Kent Pitman">Kent Pitman</a>, <a href="/wiki/Guy_Steele" class="mw-redirect" title="Guy Steele">Guy Steele</a>, <a href="/wiki/Dan_Weinreb" class="mw-redirect" title="Dan Weinreb">Dan Weinreb</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser"><a href="/wiki/American_National_Standards_Institute" title="American National Standards Institute">ANSI</a> <a href="/wiki/X3J13" title="X3J13">X3J13</a> committee</td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">1984<span class="noprint"> (40 years ago)</span><span style="display:none"> (<span class="bday dtstart published updated">1984</span>)</span>, 1994<span class="noprint"> (30 years ago)</span><span style="display:none"> (<span class="bday dtstart published updated">1994</span>)</span> for ANSI Common Lisp</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">Dynamic</a>, <a href="/wiki/Strongly-typed_programming_language" class="mw-redirect" title="Strongly-typed programming language">strong</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Scope_(computer_science)" title="Scope (computer science)">Scope</a></th><td class="infobox-data">Lexical, optionally dynamic</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="/wiki/Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data">.lisp, .lsp, .l, .cl, .fasl</td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="http://common-lisp.net">common-lisp<wbr />.net</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;">Major <a href="/wiki/Programming_language_implementation" title="Programming language implementation">implementations</a></th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Allegro CL</a>, <a href="/wiki/Armed_Bear_Common_Lisp" class="mw-redirect" title="Armed Bear Common Lisp">ABCL</a>, <a href="/w/index.php?title=Clasp_(Common_Lisp)&action=edit&redlink=1" class="new" title="Clasp (Common Lisp) (page does not exist)">Clasp</a>, <a href="/wiki/CLISP" title="CLISP">CLISP</a>, <a href="/wiki/Clozure_CL" title="Clozure CL">Clozure CL</a>, <a href="/wiki/CMUCL" class="mw-redirect" title="CMUCL">CMUCL</a>, <a href="/wiki/Embeddable_Common_Lisp" title="Embeddable Common Lisp">ECL</a>, <a href="/wiki/GNU_Common_Lisp" title="GNU Common Lisp">GCL</a>, <a href="/wiki/LispWorks" title="LispWorks">LispWorks</a>, <a href="/w/index.php?title=Scieneer_Common_Lisp&action=edit&redlink=1" class="new" title="Scieneer Common Lisp (page does not exist)">Scieneer CL</a>, <a href="/wiki/SBCL" class="mw-redirect" title="SBCL">SBCL</a>, <a href="/wiki/Genera_(operating_system)" title="Genera (operating system)">Symbolics Common Lisp</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;"><a href="/wiki/Programming_language#Dialects,_flavors_and_implementations" title="Programming language">Dialects</a></th></tr><tr><td colspan="2" class="infobox-full-data">CLtL1, CLtL2, ANSI Common Lisp</td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a>, <a href="/wiki/Lisp_Machine_Lisp" title="Lisp Machine Lisp">Lisp Machine Lisp</a>, <a href="/wiki/Maclisp" title="Maclisp">Maclisp</a>, <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>, <a href="/wiki/Interlisp" title="Interlisp">Interlisp</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;">Influenced</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/Clojure" title="Clojure">Clojure</a>, <a href="/wiki/Dylan_(programming_language)" title="Dylan (programming language)">Dylan</a>, <a href="/wiki/Emacs_Lisp" title="Emacs Lisp">Emacs Lisp</a>, <a href="/wiki/EuLisp" title="EuLisp">EuLisp</a>, <a href="/wiki/ISLISP" title="ISLISP">ISLISP</a>, <a href="/wiki/*Lisp" title="*Lisp">*Lisp</a>, <a href="/wiki/AutoLisp" class="mw-redirect" title="AutoLisp">AutoLisp</a>, <a href="/wiki/Julia_(programming_language)" title="Julia (programming language)">Julia</a>, <a href="/wiki/Moose_(Perl)" title="Moose (Perl)">Moose</a>, <a href="/wiki/R_(programming_language)" title="R (programming language)">R</a>, <a href="/wiki/Cadence_SKILL" title="Cadence SKILL">SKILL</a>, <a href="/wiki/SubL" class="mw-redirect" title="SubL">SubL</a></td></tr></tbody></table> <p><b>Common Lisp</b> (<b>CL</b>) is a dialect of the <a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp programming language</a>, published in <a href="/wiki/American_National_Standards_Institute" title="American National Standards Institute">American National Standards Institute</a> (ANSI) standard document <i>ANSI INCITS 226-1994 (S2018)</i><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> (formerly <i>X3.226-1994 (R1999)</i>).<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> The <a href="/wiki/Common_Lisp_HyperSpec" title="Common Lisp HyperSpec">Common Lisp HyperSpec</a>, a <a href="/wiki/Hyperlink" title="Hyperlink">hyperlinked</a> <a href="/wiki/HTML" title="HTML">HTML</a> version, has been derived from the ANSI Common Lisp standard.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p><p>The Common Lisp language was developed as a standardized and improved successor of <a href="/wiki/Maclisp" title="Maclisp">Maclisp</a>. By the early 1980s several groups were already at work on diverse successors to MacLisp: <a href="/wiki/Lisp_Machine_Lisp" title="Lisp Machine Lisp">Lisp Machine Lisp</a> (aka ZetaLisp), <a href="/wiki/Spice_Lisp" title="Spice Lisp">Spice Lisp</a>, <a href="/wiki/NIL_(programming_language)" title="NIL (programming language)">NIL</a> and <a href="/wiki/S-1_Lisp" title="S-1 Lisp">S-1 Lisp</a>. Common Lisp sought to unify, standardise, and extend the features of these MacLisp dialects. Common Lisp is not an implementation, but rather a language <a href="/wiki/Specification" class="mw-redirect" title="Specification">specification</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Several <a href="#Implementations">implementations</a> of the Common Lisp standard are available, including <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source software</a> and proprietary products.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Common Lisp is a general-purpose, <a href="/wiki/Multi-paradigm_programming_language" class="mw-redirect" title="Multi-paradigm programming language">multi-paradigm programming language</a>. It supports a combination of <a href="/wiki/Procedural_programming" title="Procedural programming">procedural</a>, <a href="/wiki/Functional_programming" title="Functional programming">functional</a>, and <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> paradigms. As a <a href="/wiki/Dynamic_programming_language" title="Dynamic programming language">dynamic programming language</a>, it facilitates evolutionary and <a href="/wiki/Iterative_and_incremental_development" title="Iterative and incremental development">incremental software development</a>, with iterative <a href="/wiki/Compiler" title="Compiler">compilation</a> into efficient run-time programs. This incremental development is often done interactively without interrupting the running application. </p><p>It also supports optional type annotation and casting, which can be added as necessary at the later <a href="/wiki/Profiling_(computer_programming)" title="Profiling (computer programming)">profiling</a> and optimization stages, to permit the compiler to generate more efficient code. For instance, <code>fixnum</code> can hold an <a href="/wiki/Boxing_(computer_science)" class="mw-redirect" title="Boxing (computer science)">unboxed</a> integer in a range supported by the hardware and implementation, permitting more efficient arithmetic than on big integers or arbitrary precision types. Similarly, the compiler can be told on a per-module or per-function basis which type of safety level is wanted, using <i>optimize</i> declarations. </p><p>Common Lisp includes <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">CLOS</a>, an <a href="/wiki/Object_system" class="mw-redirect" title="Object system">object system</a> that supports <a href="/wiki/Multimethods" class="mw-redirect" title="Multimethods">multimethods</a> and method combinations. It is often implemented with a <a href="/wiki/Metaobject" title="Metaobject">Metaobject</a> Protocol. </p><p>Common Lisp is extensible through standard features such as <i>Lisp <a href="/wiki/Macro_(computer_science)" title="Macro (computer science)">macros</a></i> (code transformations) and <i>reader macros</i> (input parsers for characters). </p><p>Common Lisp provides partial backwards compatibility with <a href="/wiki/Maclisp" title="Maclisp">Maclisp</a> and John McCarthy's original <a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a>. This allows older Lisp software to be ported to Common Lisp.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Work on Common Lisp started in 1981 after an initiative by ARPA manager Bob Engelmore to develop a single community standard Lisp dialect.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> Much of the initial language design was done via electronic mail.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> In 1982, <a href="/wiki/Guy_L._Steele_Jr." title="Guy L. Steele Jr.">Guy L. Steele Jr.</a> gave the first overview of Common Lisp at the 1982 ACM Symposium on LISP and functional programming.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> </p><p>The first language documentation was published in 1984 as <a href="/wiki/Common_Lisp_the_Language" title="Common Lisp the Language">Common Lisp the Language</a> (known as CLtL1), first edition. A second edition (known as CLtL2), published in 1990, incorporated many changes to the language, made during the ANSI Common Lisp standardization process: extended LOOP syntax, the Common Lisp Object System, the Condition System for error handling, an interface to the pretty printer and much more. But CLtL2 does not describe the final ANSI Common Lisp standard and thus is not a documentation of ANSI Common Lisp. The final ANSI Common Lisp standard then was published in 1994. Since then no update to the standard has been published. Various extensions and improvements to Common Lisp (examples are Unicode, Concurrency, CLOS-based IO) have been provided by implementations and <a href="/wiki/Library_(computing)" title="Library (computing)">libraries</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Syntax">Syntax</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=2" title="Edit section: Syntax"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp is a dialect of Lisp. It uses <a href="/wiki/S-expression" title="S-expression">S-expressions</a> to denote both code and data structure. Function calls, macro forms and special forms are written as lists, with the name of the operator first, as in these examples: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="c1">; adds 2 and 2, yielding 4. The function's name is '+'. Lisp has no operators as such.</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defvar</span><span class="w"> </span><span class="vg">*x*</span><span class="p">)</span><span class="w"> </span><span class="c1">; Ensures that a variable *x* exists,</span> <span class="w"> </span><span class="c1">; without giving it a value. The asterisks are part of</span> <span class="w"> </span><span class="c1">; the name, by convention denoting a special (global) variable. </span> <span class="w"> </span><span class="c1">; The symbol *x* is also hereby endowed with the property that</span> <span class="w"> </span><span class="c1">; subsequent bindings of it are dynamic, rather than lexical.</span> <span class="w"> </span><span class="p">(</span><span class="nb">setf</span><span class="w"> </span><span class="vg">*x*</span><span class="w"> </span><span class="mf">42.1</span><span class="p">)</span><span class="w"> </span><span class="c1">; Sets the variable *x* to the floating-point value 42.1</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; Define a function that squares a number:</span> <span class="w"> </span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">square</span><span class="w"> </span><span class="p">(</span><span class="nv">x</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">x</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; Execute the function:</span> <span class="w"> </span><span class="p">(</span><span class="nv">square</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="c1">; Returns 9</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; The 'let' construct creates a scope for local variables. Here</span> <span class="w"> </span><span class="c1">;; the variable 'a' is bound to 6 and the variable 'b' is bound</span> <span class="w"> </span><span class="c1">;; to 4. Inside the 'let' is a 'body', where the last computed value is returned.</span> <span class="w"> </span><span class="c1">;; Here the result of adding a and b is returned from the 'let' expression.</span> <span class="w"> </span><span class="c1">;; The variables a and b have lexical scope, unless the symbols have been</span> <span class="w"> </span><span class="c1">;; marked as special variables (for instance by a prior DEFVAR).</span> <span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">((</span><span class="nv">a</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">b</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span><span class="w"> </span><span class="c1">; returns 10</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Data_types">Data types</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=3" title="Edit section: Data types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp has many <a href="/wiki/Data_type" title="Data type">data types</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Scalar_types">Scalar types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=4" title="Edit section: Scalar types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><i>Number</i> types include <a href="/wiki/Integer" title="Integer">integers</a>, <a href="/wiki/Ratio" title="Ratio">ratios</a>, <a href="/wiki/Floating-point_arithmetic" title="Floating-point arithmetic">floating-point numbers</a>, and <a href="/wiki/Complex_number" title="Complex number">complex numbers</a>.<sup id="cite_ref-reddy_11-0" class="reference"><a href="#cite_note-reddy-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> Common Lisp uses <a href="/wiki/Arbitrary-precision_arithmetic" title="Arbitrary-precision arithmetic">bignums</a> to represent numerical values of arbitrary size and precision. The ratio type represents fractions exactly, a facility not available in many languages. Common Lisp automatically coerces numeric values among these types as appropriate. </p><p>The Common Lisp <i><a href="/wiki/Character_(computing)" title="Character (computing)">character</a></i> type is not limited to <a href="/wiki/ASCII" title="ASCII">ASCII</a> characters. Most modern implementations allow <a href="/wiki/Unicode" title="Unicode">Unicode</a> characters.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> </p><p>The <i><a href="/wiki/Symbol_(programming)" title="Symbol (programming)">symbol</a></i> type is common to Lisp languages, but largely unknown outside them. A symbol is a unique, named data object with several parts: name, value, function, property list, and package. Of these, <i>value cell</i> and <i>function cell</i> are the most important. Symbols in Lisp are often used similarly to identifiers in other languages: to hold the value of a variable; however there are many other uses. Normally, when a symbol is evaluated, its value is returned. Some symbols evaluate to themselves, for example, all symbols in the keyword package are self-evaluating. Boolean values in Common Lisp are represented by the self-evaluating symbols T and NIL. Common Lisp has namespaces for symbols, called 'packages'. </p><p>A number of functions are available for <a href="/wiki/Rounding" title="Rounding">rounding</a> scalar numeric values in various ways. The function <code>round</code> rounds the argument to the nearest integer, with halfway cases rounded to the even integer. The functions <code>truncate</code>, <code>floor</code>, and <code>ceiling</code> round towards zero, down, or up respectively. All these functions return the discarded fractional part as a secondary value. For example, <code>(floor -2.5)</code> yields −3, 0.5; <code>(ceiling -2.5)</code> yields −2, −0.5; <code>(round 2.5)</code> yields 2, 0.5; and <code>(round 3.5)</code> yields 4, −0.5. </p> <div class="mw-heading mw-heading3"><h3 id="Data_structures">Data structures</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=5" title="Edit section: Data structures"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><i>Sequence</i> types in Common Lisp include lists, vectors, bit-vectors, and strings. There are many operations that can work on any sequence type. </p><p>As in almost all other Lisp dialects, <i>lists</i> in Common Lisp are composed of <i>conses</i>, sometimes called <i>cons cells</i> or <i>pairs</i>. A cons is a data structure with two slots, called its <i>car</i> and <i>cdr</i>. A list is a linked chain of conses or the empty list. Each cons's car refers to a member of the list (possibly another list). Each cons's cdr refers to the next cons—except for the last cons in a list, whose cdr refers to the <code>nil</code> value. Conses can also easily be used to implement trees and other complex data structures; though it is usually advised to use structure or class instances instead. It is also possible to create circular data structures with conses. </p><p>Common Lisp supports multidimensional <i>arrays</i>, and can dynamically resize <i>adjustable</i> arrays if required. Multidimensional arrays can be used for matrix mathematics. A <i>vector</i> is a one-dimensional array. Arrays can carry any type as members (even mixed types in the same array) or can be specialized to contain a specific type of members, as in a vector of bits. Usually, only a few types are supported. Many implementations can optimize array functions when the array used is type-specialized. Two type-specialized array types are standard: a <i>string</i> is a vector of characters, while a <i>bit-vector</i> is a vector of <a href="/wiki/Bit" title="Bit">bits</a>. </p><p><i><a href="/wiki/Hash_table" title="Hash table">Hash tables</a></i> store associations between data objects. Any object may be used as key or value. Hash tables are automatically resized as needed. </p><p><i>Packages</i> are collections of symbols, used chiefly to separate the parts of a program into <a href="/wiki/Namespaces" class="mw-redirect" title="Namespaces">namespaces</a>. A package may <i>export</i> some symbols, marking them as part of a public interface. Packages can use other packages. </p><p><i>Structures</i>, similar in use to <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> structs and <a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a> records, represent arbitrary complex data structures with any number and type of fields (called <i>slots</i>). Structures allow single-inheritance. </p><p><i>Classes</i> are similar to structures, but offer more dynamic features and multiple-inheritance. (See <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">CLOS</a>). Classes have been added late to Common Lisp and there is some conceptual overlap with structures. Objects created of classes are called <i>Instances</i>. A special case is Generic Functions. Generic Functions are both functions and instances. </p> <div class="mw-heading mw-heading3"><h3 id="Functions">Functions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=6" title="Edit section: Functions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp supports <a href="/wiki/First-class_function" title="First-class function">first-class functions</a>. For instance, it is possible to write functions that take other functions as arguments or return functions as well. This makes it possible to describe very general operations. </p><p>The Common Lisp library relies heavily on such higher-order functions. For example, the <code>sort</code> function takes a <a href="/wiki/Relational_operator" title="Relational operator">relational operator</a> as an argument and key function as an optional keyword argument. This can be used not only to sort any type of data, but also to sort data structures according to a key. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; Sorts the list using the > and < function as the relational operator.</span> <span class="w"> </span><span class="p">(</span><span class="nb">sort</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">6</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="nf">#'</span><span class="nb">></span><span class="p">)</span><span class="w"> </span><span class="c1">; Returns (6 5 4 3 2 1)</span> <span class="w"> </span><span class="p">(</span><span class="nb">sort</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">6</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="nf">#'</span><span class="nb"><</span><span class="p">)</span><span class="w"> </span><span class="c1">; Returns (1 2 3 4 5 6)</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; Sorts the list according to the first element of each sub-list.</span> <span class="w"> </span><span class="p">(</span><span class="nb">sort</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="mi">9</span><span class="w"> </span><span class="nv">A</span><span class="p">)</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="nv">B</span><span class="p">)</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="mi">4</span><span class="w"> </span><span class="nv">C</span><span class="p">))</span><span class="w"> </span><span class="nf">#'</span><span class="nb"><</span><span class="w"> </span><span class="ss">:key</span><span class="w"> </span><span class="nf">#'</span><span class="nb">first</span><span class="p">)</span><span class="w"> </span><span class="c1">; Returns ((3 B) (4 C) (9 A))</span> </pre></div> <p>The evaluation model for functions is very simple. When the evaluator encounters a form <code>(f a1 a2...)</code> then it presumes that the symbol named f is one of the following: </p> <ol><li>A special operator (easily checked against a fixed list)</li> <li>A macro operator (must have been defined previously)</li> <li>The name of a function (default), which may either be a symbol, or a sub-form beginning with the symbol <code>lambda</code>.</li></ol> <p>If f is the name of a function, then the arguments a1, a2, ..., an are evaluated in left-to-right order, and the function is found and invoked with those values supplied as parameters. </p> <div class="mw-heading mw-heading4"><h4 id="Defining_functions">Defining functions</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=7" title="Edit section: Defining functions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <a href="/wiki/Defun" class="mw-redirect" title="Defun">macro <code>defun</code></a> defines functions where a function definition gives the name of the function, the names of any arguments, and a function body: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">square</span><span class="w"> </span><span class="p">(</span><span class="nv">x</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">x</span><span class="p">))</span> </pre></div> <p>Function definitions may include compiler <a href="/wiki/Directive_(programming)" title="Directive (programming)">directives</a>, known as <i>declarations</i>, which provide hints to the compiler about optimization settings or the data types of arguments. They may also include <i>documentation strings</i> (docstrings), which the Lisp system may use to provide interactive documentation: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">square</span><span class="w"> </span><span class="p">(</span><span class="nv">x</span><span class="p">)</span> <span class="w"> </span><span class="s">"Calculates the square of the single-float x."</span> <span class="w"> </span><span class="p">(</span><span class="k">declare</span><span class="w"> </span><span class="p">(</span><span class="kt">single-float</span><span class="w"> </span><span class="nv">x</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="k">optimize</span><span class="w"> </span><span class="p">(</span><span class="nv">speed</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">debug</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">safety</span><span class="w"> </span><span class="mi">1</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="k">the</span><span class="w"> </span><span class="kt">single-float</span><span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">x</span><span class="p">)))</span> </pre></div> <p>Anonymous functions (<a href="/wiki/Function_literal" class="mw-redirect" title="Function literal">function literals</a>) are defined using <code>lambda</code> expressions, e.g. <code>(lambda (x) (* x x))</code> for a function that squares its argument. Lisp programming style frequently uses higher-order functions for which it is useful to provide anonymous functions as arguments. </p><p>Local functions can be defined with <code>flet</code> and <code>labels</code>. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="k">flet</span><span class="w"> </span><span class="p">((</span><span class="nv">square</span><span class="w"> </span><span class="p">(</span><span class="nv">x</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">x</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="nv">square</span><span class="w"> </span><span class="mi">3</span><span class="p">))</span> </pre></div> <p>There are several other operators related to the definition and manipulation of functions. For instance, a function may be compiled with the <code>compile</code> operator. (Some Lisp systems run functions using an interpreter by default unless instructed to compile; others compile every function). </p> <div class="mw-heading mw-heading4"><h4 id="Defining_generic_functions_and_methods">Defining generic functions and methods</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=8" title="Edit section: Defining generic functions and methods"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The macro <code>defgeneric</code> defines <a href="/wiki/Generic_function" title="Generic function">generic functions</a>. Generic functions are a collection of <a href="/wiki/Method_(computer_programming)" title="Method (computer programming)">methods</a>. The macro <code>defmethod</code> defines methods. </p><p>Methods can specialize their parameters over CLOS <i>standard classes</i>, <i>system classes</i>, <i>structure classes</i> or individual objects. For many types, there are corresponding <i>system classes</i>. </p><p>When a generic function is called, <a href="/wiki/Multiple_dispatch" title="Multiple dispatch">multiple-dispatch</a> will determine the effective method to use. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defgeneric</span><span class="w"> </span><span class="nv">add</span><span class="w"> </span><span class="p">(</span><span class="nv">a</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defmethod</span><span class="w"> </span><span class="nv">add</span><span class="w"> </span><span class="p">((</span><span class="nv">a</span><span class="w"> </span><span class="nc">number</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">b</span><span class="w"> </span><span class="nc">number</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defmethod</span><span class="w"> </span><span class="nv">add</span><span class="w"> </span><span class="p">((</span><span class="nv">a</span><span class="w"> </span><span class="nb">vector</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">b</span><span class="w"> </span><span class="nc">number</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">map</span><span class="w"> </span><span class="ss">'vector</span><span class="w"> </span><span class="p">(</span><span class="k">lambda</span><span class="w"> </span><span class="p">(</span><span class="nv">n</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span><span class="w"> </span><span class="nv">a</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defmethod</span><span class="w"> </span><span class="nv">add</span><span class="w"> </span><span class="p">((</span><span class="nv">a</span><span class="w"> </span><span class="nb">vector</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">b</span><span class="w"> </span><span class="nb">vector</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">map</span><span class="w"> </span><span class="ss">'vector</span><span class="w"> </span><span class="nf">#'</span><span class="nb">+</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defmethod</span><span class="w"> </span><span class="nv">add</span><span class="w"> </span><span class="p">((</span><span class="nv">a</span><span class="w"> </span><span class="nb">string</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">b</span><span class="w"> </span><span class="nb">string</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">concatenate</span><span class="w"> </span><span class="ss">'string</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="nv">b</span><span class="p">))</span> </pre></div> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nv">add</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="c1">; returns 5</span> <span class="w"> </span><span class="p">(</span><span class="nv">add</span><span class="w"> </span><span class="o">#(</span><span class="mi">1</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="mi">7</span><span class="p">)</span><span class="w"> </span><span class="c1">; returns #(8 9 10 11)</span> <span class="w"> </span><span class="p">(</span><span class="nv">add</span><span class="w"> </span><span class="o">#(</span><span class="mi">1</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="o">#(</span><span class="mi">4</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="w"> </span><span class="c1">; returns #(5 5 5 5)</span> <span class="w"> </span><span class="p">(</span><span class="nv">add</span><span class="w"> </span><span class="s">"COMMON "</span><span class="w"> </span><span class="s">"LISP"</span><span class="p">)</span><span class="w"> </span><span class="c1">; returns "COMMON LISP"</span> </pre></div> <p>Generic Functions are also a <a href="/wiki/First-class_citizen" title="First-class citizen">first class data type</a>. There are many more features to Generic Functions and Methods than described above. </p> <div class="mw-heading mw-heading4"><h4 id="The_function_namespace">The function namespace</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=9" title="Edit section: The function namespace"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The namespace for function names is separate from the namespace for data variables. This is a key difference between Common Lisp and <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>. For Common Lisp, operators that define names in the function namespace include <code>defun</code>, <code>flet</code>, <code>labels</code>, <code>defmethod</code> and <code>defgeneric</code>. </p><p>To pass a function by name as an argument to another function, one must use the <code>function</code> special operator, commonly abbreviated as <code>#'</code>. The first <code>sort</code> example above refers to the function named by the symbol <code>></code> in the function namespace, with the code <code>#'></code>. Conversely, to call a function passed in such a way, one would use the <code>funcall</code> operator on the argument. </p><p><a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme's</a> evaluation model is simpler: there is only one namespace, and all positions in the form are evaluated (in any order) – not just the arguments. Code written in one dialect is therefore sometimes confusing to programmers more experienced in the other. For instance, many Common Lisp programmers like to use descriptive variable names such as <i>list</i> or <i>string</i> which could cause problems in Scheme, as they would locally shadow function names. </p><p>Whether a separate namespace for functions is an advantage is a source of contention in the Lisp community. It is usually referred to as the <i>Lisp-1 vs. Lisp-2 debate</i>. Lisp-1 refers to Scheme's model and Lisp-2 refers to Common Lisp's model. These names were coined in a 1988 paper by <a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a> and <a href="/wiki/Kent_Pitman" title="Kent Pitman">Kent Pitman</a>, which extensively compares the two approaches.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Multiple_return_values">Multiple return values</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=10" title="Edit section: Multiple return values"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp supports the concept of <i>multiple values</i>,<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> where any expression always has a single <i>primary value</i>, but it might also have any number of <i>secondary values</i>, which might be received and inspected by interested callers. This concept is distinct from returning a list value, as the secondary values are fully optional, and passed via a dedicated side channel. This means that callers may remain entirely unaware of the secondary values being there if they have no need for them, and it makes it convenient to use the mechanism for communicating information that is sometimes useful, but not always necessary. For example, </p> <ul><li>The <code>TRUNCATE</code> function<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> rounds the given number to an <a href="/wiki/Integer" title="Integer">integer</a> towards zero. However, it also returns a remainder as a secondary value, making it very easy to determine what value was truncated. It also supports an optional divisor parameter, which can be used to perform <a href="/wiki/Euclidean_division" title="Euclidean division">Euclidean division</a> trivially:</li></ul> <div class="mw-highlight mw-highlight-lang-cl mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">((</span><span class="nv">x</span><span class="w"> </span><span class="mi">1266778</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">y</span><span class="w"> </span><span class="mi">458</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">multiple-value-bind</span><span class="w"> </span><span class="p">(</span><span class="nv">quotient</span><span class="w"> </span><span class="nv">remainder</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">truncate</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">y</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">format</span><span class="w"> </span><span class="no">nil</span><span class="w"> </span><span class="s">"~A divided by ~A is ~A remainder ~A"</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">y</span><span class="w"> </span><span class="nv">quotient</span><span class="w"> </span><span class="nv">remainder</span><span class="p">)))</span> <span class="c1">;;;; => "1266778 divided by 458 is 2765 remainder 408"</span> </pre></div> <ul><li><code>GETHASH</code><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> returns the value of a key in an <a href="/wiki/Associative_map" class="mw-redirect" title="Associative map">associative map</a>, or the default value otherwise, and a secondary Boolean indicating whether the value was found. Thus code that does not care about whether the value was found or provided as the default can simply use it as-is, but when such distinction is important, it might inspect the secondary Boolean and react appropriately. Both use cases are supported by the same call and neither is unnecessarily burdened or constrained by the other. Having this feature at the language level removes the need to check for the existence of the key or compare it to <a href="/wiki/Null_morpheme" title="Null morpheme">null</a> as would be done in other languages.</li></ul> <div class="mw-highlight mw-highlight-lang-cl mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">get-answer</span><span class="w"> </span><span class="p">(</span><span class="nv">library</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">gethash</span><span class="w"> </span><span class="ss">'answer</span><span class="w"> </span><span class="nv">library</span><span class="w"> </span><span class="mi">42</span><span class="p">))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">the-answer-1</span><span class="w"> </span><span class="p">(</span><span class="nv">library</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">format</span><span class="w"> </span><span class="no">nil</span><span class="w"> </span><span class="s">"The answer is ~A"</span><span class="w"> </span><span class="p">(</span><span class="nv">get-answer</span><span class="w"> </span><span class="nv">library</span><span class="p">)))</span> <span class="c1">;;;; Returns "The answer is 42" if ANSWER not present in LIBRARY</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">the-answer-2</span><span class="w"> </span><span class="p">(</span><span class="nv">library</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">multiple-value-bind</span><span class="w"> </span><span class="p">(</span><span class="nv">answer</span><span class="w"> </span><span class="nv">sure-p</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">get-answer</span><span class="w"> </span><span class="nv">library</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nb">not</span><span class="w"> </span><span class="nv">sure-p</span><span class="p">)</span> <span class="w"> </span><span class="s">"I don't know"</span> <span class="w"> </span><span class="p">(</span><span class="nb">format</span><span class="w"> </span><span class="no">nil</span><span class="w"> </span><span class="s">"The answer is ~A"</span><span class="w"> </span><span class="nv">answer</span><span class="p">))))</span> <span class="c1">;;;; Returns "I don't know" if ANSWER not present in LIBRARY</span> </pre></div> <p>Multiple values are supported by a handful of standard forms, most common of which are the <code>MULTIPLE-VALUE-BIND</code> special form for accessing secondary values and <code>VALUES</code> for returning multiple values: </p> <div class="mw-highlight mw-highlight-lang-cl mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">magic-eight-ball</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="s">"Return an outlook prediction, with the probability as a secondary value"</span> <span class="w"> </span><span class="p">(</span><span class="nb">values</span><span class="w"> </span><span class="s">"Outlook good"</span><span class="w"> </span><span class="p">(</span><span class="nb">random</span><span class="w"> </span><span class="mf">1.0</span><span class="p">)))</span> <span class="c1">;;;; => "Outlook good"</span> <span class="c1">;;;; => 0.3187</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Other_types">Other types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=11" title="Edit section: Other types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Other data types in Common Lisp include: </p> <ul><li><i>Pathnames</i> represent files and directories in the <a href="/wiki/Filesystem" class="mw-redirect" title="Filesystem">filesystem</a>. The Common Lisp pathname facility is more general than most operating systems' file naming conventions, making Lisp programs' access to files broadly portable across diverse systems.</li> <li>Input and output <i>streams</i> represent sources and sinks of binary or textual data, such as the terminal or open files.</li> <li>Common Lisp has a built-in <a href="/wiki/Pseudo-random_number_generator" class="mw-redirect" title="Pseudo-random number generator">pseudo-random number generator</a> (PRNG). <i>Random state</i> objects represent reusable sources of pseudo-random numbers, allowing the user to seed the PRNG or cause it to replay a sequence.</li> <li><i>Conditions</i> are a type used to represent errors, exceptions, and other "interesting" events to which a program may respond.</li> <li><i>Classes</i> are <a href="/wiki/First-class_object" class="mw-redirect" title="First-class object">first-class objects</a>, and are themselves instances of classes called <a href="/wiki/Metaclasses" class="mw-redirect" title="Metaclasses">metaobject classes</a> (<a href="/wiki/Metaclasses" class="mw-redirect" title="Metaclasses">metaclasses</a> for short).</li> <li><i>Readtables</i> are a type of object which control how Common Lisp's reader parses the text of source code. By controlling which readtable is in use when code is read in, the programmer can change or extend the language's syntax.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Scope">Scope</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=12" title="Edit section: Scope"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Like programs in many other programming languages, Common Lisp programs make use of names to refer to variables, functions, and many other kinds of entities. Named references are subject to scope. </p><p>The association between a name and the entity which the name refers to is called a binding. </p><p>Scope refers to the set of circumstances in which a name is determined to have a particular binding. </p> <div class="mw-heading mw-heading3"><h3 id="Determiners_of_scope">Determiners of scope</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=13" title="Edit section: Determiners of scope"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The circumstances which determine scope in Common Lisp include: </p> <ul><li>the location of a reference within an expression. If it's the leftmost position of a compound, it refers to a special operator or a macro or function binding, otherwise to a variable binding or something else.</li> <li>the kind of expression in which the reference takes place. For instance, <code>(go x)</code> means transfer control to label <code>x</code>, whereas <code>(print x)</code> refers to the variable <code>x</code>. Both scopes of <code>x</code> can be active in the same region of program text, since tagbody labels are in a separate namespace from variable names. A special form or macro form has complete control over the meanings of all symbols in its syntax. For instance, in <code>(defclass x (a b) ())</code>, a class definition, the <code>(a b)</code> is a list of base classes, so these names are looked up in the space of class names, and <code>x</code> isn't a reference to an existing binding, but the name of a new class being derived from <code>a</code> and <code>b</code>. These facts emerge purely from the semantics of <code>defclass</code>. The only generic fact about this expression is that <code>defclass</code> refers to a macro binding; everything else is up to <code>defclass</code>.</li> <li>the location of the reference within the program text. For instance, if a reference to variable <code>x</code> is enclosed in a binding construct such as a <a href="/wiki/Let_expression" title="Let expression"><code>let</code></a> which defines a binding for <code>x</code>, then the reference is in the scope created by that binding.</li> <li>for a variable reference, whether or not a variable symbol has been, locally or globally, declared special. This determines whether the reference is resolved within a lexical environment, or within a dynamic environment.</li> <li>the specific instance of the environment in which the reference is resolved. An environment is a run-time dictionary which maps symbols to bindings. Each kind of reference uses its own kind of environment. References to lexical variables are resolved in a lexical environment, et cetera. More than one environment can be associated with the same reference. For instance, thanks to recursion or the use of multiple threads, multiple activations of the same function can exist at the same time. These activations share the same program text, but each has its own lexical environment instance.</li></ul> <p>To understand what a symbol refers to, the Common Lisp programmer must know what kind of reference is being expressed, what kind of scope it uses if it is a variable reference (dynamic versus lexical scope), and also the run-time situation: in what environment is the reference resolved, where was the binding introduced into the environment, et cetera. </p> <div class="mw-heading mw-heading3"><h3 id="Kinds_of_environment">Kinds of environment</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=14" title="Edit section: Kinds of environment"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Global">Global</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=15" title="Edit section: Global"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Some environments in Lisp are globally pervasive. For instance, if a new type is defined, it is known everywhere thereafter. References to that type look it up in this global environment. </p> <div class="mw-heading mw-heading4"><h4 id="Dynamic">Dynamic</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=16" title="Edit section: Dynamic"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>One type of environment in Common Lisp is the dynamic environment. Bindings established in this environment have dynamic extent, which means that a binding is established at the start of the execution of some construct, such as a <code>let</code> block, and disappears when that construct finishes executing: its lifetime is tied to the dynamic activation and deactivation of a block. However, a dynamic binding is not just visible within that block; it is also visible to all functions invoked from that block. This type of visibility is known as indefinite scope. Bindings which exhibit dynamic extent (lifetime tied to the activation and deactivation of a block) and indefinite scope (visible to all functions which are called from that block) are said to have dynamic scope. </p><p>Common Lisp has support for dynamically scoped variables, which are also called special variables. Certain other kinds of bindings are necessarily dynamically scoped also, such as restarts and catch tags. Function bindings cannot be dynamically scoped using <code>flet</code> (which only provides lexically scoped function bindings), but function objects (a first-level object in Common Lisp) can be assigned to dynamically scoped variables, bound using <code>let</code> in dynamic scope, then called using <code>funcall</code> or <code>APPLY</code>. </p><p>Dynamic scope is extremely useful because it adds referential clarity and discipline to <a href="/wiki/Global_variable" title="Global variable">global variables</a>. Global variables are frowned upon in computer science as potential sources of error, because they can give rise to ad-hoc, covert channels of communication among modules that lead to unwanted, surprising interactions. </p><p>In Common Lisp, a special variable which has only a top-level binding behaves just like a global variable in other programming languages. A new value can be stored into it, and that value simply replaces what is in the top-level binding. Careless replacement of the value of a global variable is at the heart of bugs caused by the use of global variables. However, another way to work with a special variable is to give it a new, local binding within an expression. This is sometimes referred to as "rebinding" the variable. Binding a dynamically scoped variable temporarily creates a new memory location for that variable, and associates the name with that location. While that binding is in effect, all references to that variable refer to the new binding; the previous binding is hidden. When execution of the binding expression terminates, the temporary memory location is gone, and the old binding is revealed, with the original value intact. Of course, multiple dynamic bindings for the same variable can be nested. </p><p>In Common Lisp implementations which support multithreading, dynamic scopes are specific to each thread of execution. Thus special variables serve as an abstraction for thread local storage. If one thread rebinds a special variable, this rebinding has no effect on that variable in other threads. The value stored in a binding can only be retrieved by the thread which created that binding. If each thread binds some special variable <code>*x*</code>, then <code>*x*</code> behaves like thread-local storage. Among threads which do not rebind <code>*x*</code>, it behaves like an ordinary global: all of these threads refer to the same top-level binding of <code>*x*</code>. </p><p>Dynamic variables can be used to extend the execution context with additional context information which is implicitly passed from function to function without having to appear as an extra function parameter. This is especially useful when the control transfer has to pass through layers of unrelated code, which simply cannot be extended with extra parameters to pass the additional data. A situation like this usually calls for a global variable. That global variable must be saved and restored, so that the scheme doesn't break under recursion: dynamic variable rebinding takes care of this. And that variable must be made thread-local (or else a big mutex must be used) so the scheme doesn't break under threads: dynamic scope implementations can take care of this also. </p><p>In the Common Lisp library, there are many standard special variables. For instance, all standard I/O streams are stored in the top-level bindings of well-known special variables. The standard output stream is stored in *standard-output*. </p><p>Suppose a function foo writes to standard output: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">foo</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="p">(</span><span class="nb">format</span><span class="w"> </span><span class="no">t</span><span class="w"> </span><span class="s">"Hello, world"</span><span class="p">))</span> </pre></div> <p>To capture its output in a character string, *standard-output* can be bound to a string stream and called: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">with-output-to-string</span><span class="w"> </span><span class="p">(</span><span class="vg">*standard-output*</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">foo</span><span class="p">))</span> </pre></div> <pre> -> "Hello, world" ; gathered output returned as a string </pre> <div class="mw-heading mw-heading4"><h4 id="Lexical">Lexical</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=17" title="Edit section: Lexical"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp supports lexical environments. Formally, the bindings in a lexical environment have <a href="/wiki/Lexical_scope" class="mw-redirect" title="Lexical scope">lexical scope</a> and may have either an indefinite extent or dynamic extent, depending on the type of namespace. <a href="/wiki/Lexical_scope" class="mw-redirect" title="Lexical scope">Lexical scope</a> means that visibility is physically restricted to the block in which the binding is established. References which are not textually (i.e. lexically) embedded in that block simply do not see that binding. </p><p>The tags in a TAGBODY have lexical scope. The expression (GO X) is erroneous if it is not embedded in a TAGBODY which contains a label X. However, the label bindings disappear when the TAGBODY terminates its execution, because they have dynamic extent. If that block of code is re-entered by the invocation of a <a href="/wiki/Lexical_closure" class="mw-redirect" title="Lexical closure">lexical closure</a>, it is invalid for the body of that closure to try to transfer control to a tag via GO: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">defvar</span><span class="w"> </span><span class="vg">*stashed*</span><span class="p">)</span><span class="w"> </span><span class="c1">;; will hold a function</span> <span class="w"> </span><span class="p">(</span><span class="k">tagbody</span> <span class="w"> </span><span class="p">(</span><span class="nb">setf</span><span class="w"> </span><span class="vg">*stashed*</span><span class="w"> </span><span class="p">(</span><span class="k">lambda</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">(</span><span class="k">go</span><span class="w"> </span><span class="nv">some-label</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="k">go</span><span class="w"> </span><span class="nv">end-label</span><span class="p">)</span><span class="w"> </span><span class="c1">;; skip the (print "Hello")</span> <span class="w"> </span><span class="nv">some-label</span> <span class="w"> </span><span class="p">(</span><span class="nb">print</span><span class="w"> </span><span class="s">"Hello"</span><span class="p">)</span> <span class="w"> </span><span class="nv">end-label</span><span class="p">)</span> <span class="w"> </span><span class="nv">-></span><span class="w"> </span><span class="no">NIL</span> </pre></div> <p>When the TAGBODY is executed, it first evaluates the setf form which stores a function in the special variable *stashed*. Then the (go end-label) transfers control to end-label, skipping the code (print "Hello"). Since end-label is at the end of the tagbody, the tagbody terminates, yielding NIL. Suppose that the previously remembered function is now called: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="vg">*stashed*</span><span class="p">)</span><span class="w"> </span><span class="c1">;; Error!</span> </pre></div> <p>This situation is erroneous. One implementation's response is an error condition containing the message, "GO: tagbody for tag SOME-LABEL has already been left". The function tried to evaluate (go some-label), which is lexically embedded in the tagbody, and resolves to the label. However, the tagbody isn't executing (its extent has ended), and so the control transfer cannot take place. </p><p>Local function bindings in Lisp have <a href="/wiki/Lexical_scope" class="mw-redirect" title="Lexical scope">lexical scope</a>, and variable bindings also have lexical scope by default. By contrast with GO labels, both of these have indefinite extent. When a lexical function or variable binding is established, that binding continues to exist for as long as references to it are possible, even after the construct which established that binding has terminated. References to lexical variables and functions after the termination of their establishing construct are possible thanks to <a href="/wiki/Lexical_closure" class="mw-redirect" title="Lexical closure">lexical closures</a>. </p><p>Lexical binding is the default binding mode for Common Lisp variables. For an individual symbol, it can be switched to dynamic scope, either by a local declaration, by a global declaration. The latter may occur implicitly through the use of a construct like DEFVAR or DEFPARAMETER. It is an important convention in Common Lisp programming that special (i.e. dynamically scoped) variables have names which begin and end with an asterisk <a href="/wiki/Sigil_(computer_programming)" title="Sigil (computer programming)">sigil</a> <code>*</code> in what is called the "<a href="/wiki/Earmuff" class="mw-redirect" title="Earmuff">earmuff</a> convention".<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> If adhered to, this convention effectively creates a separate namespace for special variables, so that variables intended to be lexical are not accidentally made special. </p><p><a href="/wiki/Lexical_scope" class="mw-redirect" title="Lexical scope">Lexical scope</a> is useful for several reasons. </p><p>Firstly, references to variables and functions can be compiled to efficient machine code, because the run-time environment structure is relatively simple. In many cases it can be optimized to stack storage, so opening and closing lexical scopes has minimal overhead. Even in cases where full closures must be generated, access to the closure's environment is still efficient; typically each variable becomes an offset into a vector of bindings, and so a variable reference becomes a simple load or store instruction with a base-plus-offset <a href="/wiki/Addressing_mode" title="Addressing mode">addressing mode</a>. </p><p>Secondly, lexical scope (combined with indefinite extent) gives rise to the <a href="/wiki/Lexical_closure" class="mw-redirect" title="Lexical closure">lexical closure</a>, which in turn creates a whole paradigm of programming centered around the use of functions being first-class objects, which is at the root of functional programming. </p><p>Thirdly, perhaps most importantly, even if lexical closures are not exploited, the use of lexical scope isolates program modules from unwanted interactions. Due to their restricted visibility, lexical variables are private. If one module A binds a lexical variable X, and calls another module B, references to X in B will not accidentally resolve to the X bound in A. B simply has no access to X. For situations in which disciplined interactions through a variable are desirable, Common Lisp provides special variables. Special variables allow for a module A to set up a binding for a variable X which is visible to another module B, called from A. Being able to do this is an advantage, and being able to prevent it from happening is also an advantage; consequently, Common Lisp supports both lexical and <a href="/wiki/Dynamic_scope" class="mw-redirect" title="Dynamic scope">dynamic scope</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Macros">Macros</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=18" title="Edit section: Macros"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <i><a href="/wiki/Macro_(computer_science)" title="Macro (computer science)">macro</a></i> in Lisp superficially resembles a function in usage. However, rather than representing an expression which is evaluated, it represents a transformation of the program source code. The macro gets the source it surrounds as arguments, binds them to its parameters and computes a new source form. This new form can also use a macro. The macro expansion is repeated until the new source form does not use a macro. The final computed form is the source code executed at runtime. </p><p>Typical uses of macros in Lisp: </p> <ul><li>new control structures (example: looping constructs, branching constructs)</li> <li>scoping and binding constructs</li> <li>simplified syntax for complex and repeated source code</li> <li>top-level defining forms with compile-time side-effects</li> <li><a href="/wiki/Data-driven_programming" title="Data-driven programming">data-driven programming</a></li> <li>embedded domain specific languages (examples: <a href="/wiki/SQL" title="SQL">SQL</a>, <a href="/wiki/HTML" title="HTML">HTML</a>, <a href="/wiki/Prolog" title="Prolog">Prolog</a>)</li> <li>implicit finalization forms</li></ul> <p>Various standard Common Lisp features also need to be implemented as macros, such as: </p> <ul><li>the standard <code>setf</code> abstraction, to allow custom compile-time expansions of assignment/access operators</li> <li><code>with-accessors</code>, <code>with-slots</code>, <code>with-open-file</code> and other similar <code>WITH</code> macros</li> <li>Depending on implementation, <code>if</code> or <code>cond</code> is a macro built on the other, the special operator; <code>when</code> and <code>unless</code> consist of macros</li> <li>The powerful <code>loop</code> domain-specific language</li></ul> <p>Macros are defined by the <i>defmacro</i> macro. The special operator <i>macrolet</i> allows the definition of local (lexically scoped) macros. It is also possible to define macros for symbols using <i>define-symbol-macro</i> and <i>symbol-macrolet</i>. </p><p><a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Paul Graham</a>'s book <a href="/wiki/On_Lisp" title="On Lisp">On Lisp</a> describes the use of macros in Common Lisp in detail. <a href="/w/index.php?title=Doug_Hoyte&action=edit&redlink=1" class="new" title="Doug Hoyte (page does not exist)">Doug Hoyte</a>'s book <a href="/w/index.php?title=Let_Over_Lambda&action=edit&redlink=1" class="new" title="Let Over Lambda (page does not exist)">Let Over Lambda</a> extends the discussion on macros, claiming "Macros are the single greatest advantage that lisp has as a programming language and the single greatest advantage of any programming language." Hoyte provides several examples of iterative development of macros. </p> <div class="mw-heading mw-heading3"><h3 id="Example_using_a_macro_to_define_a_new_control_structure">Example using a macro to define a new control structure</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=19" title="Edit section: Example using a macro to define a new control structure"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Macros allow Lisp programmers to create new syntactic forms in the language. One typical use is to create new control structures. The example macro provides an <code>until</code> looping construct. The syntax is: </p> <div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>(until test form*) </pre></div> <p>The macro definition for <i>until</i>: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defmacro</span><span class="w"> </span><span class="nv">until</span><span class="w"> </span><span class="p">(</span><span class="nv">test</span><span class="w"> </span><span class="k">&body</span><span class="w"> </span><span class="nv">body</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">((</span><span class="nv">start-tag</span><span class="w"> </span><span class="p">(</span><span class="nb">gensym</span><span class="w"> </span><span class="s">"START"</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">end-tag</span><span class="w"> </span><span class="p">(</span><span class="nb">gensym</span><span class="w"> </span><span class="s">"END"</span><span class="p">)))</span> <span class="w"> </span><span class="o">`</span><span class="p">(</span><span class="k">tagbody</span><span class="w"> </span><span class="o">,</span><span class="nv">start-tag</span> <span class="w"> </span><span class="p">(</span><span class="nb">when</span><span class="w"> </span><span class="o">,</span><span class="nv">test</span><span class="w"> </span><span class="p">(</span><span class="k">go</span><span class="w"> </span><span class="o">,</span><span class="nv">end-tag</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="k">progn</span><span class="w"> </span><span class="o">,@</span><span class="nv">body</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="k">go</span><span class="w"> </span><span class="o">,</span><span class="nv">start-tag</span><span class="p">)</span> <span class="w"> </span><span class="o">,</span><span class="nv">end-tag</span><span class="p">)))</span> </pre></div> <p><i>tagbody</i> is a primitive Common Lisp special operator which provides the ability to name tags and use the <i>go</i> form to jump to those tags. The backquote <i>`</i> provides a notation that provides code templates, where the value of forms preceded with a comma are filled in. Forms preceded with comma and at-sign are <i>spliced</i> in. The tagbody form tests the end condition. If the condition is true, it jumps to the end tag. Otherwise, the provided body code is executed and then it jumps to the start tag. </p><p>An example of using the above <i>until</i> macro: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nv">until</span><span class="w"> </span><span class="p">(</span><span class="nb">=</span><span class="w"> </span><span class="p">(</span><span class="nb">random</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">write-line</span><span class="w"> </span><span class="s">"Hello"</span><span class="p">))</span> </pre></div> <p>The code can be expanded using the function <i>macroexpand-1</i>. The expansion for the above example looks like this: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nv">TAGBODY</span> <span class="w"> </span><span class="ss">#:START1136</span> <span class="w"> </span><span class="p">(</span><span class="nv">WHEN</span><span class="w"> </span><span class="p">(</span><span class="nv">ZEROP</span><span class="w"> </span><span class="p">(</span><span class="nv">RANDOM</span><span class="w"> </span><span class="mi">10</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">GO</span><span class="w"> </span><span class="ss">#:END1137</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">PROGN</span><span class="w"> </span><span class="p">(</span><span class="nv">WRITE-LINE</span><span class="w"> </span><span class="s">"hello"</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">GO</span><span class="w"> </span><span class="ss">#:START1136</span><span class="p">)</span> <span class="w"> </span><span class="ss">#:END1137</span><span class="p">)</span> </pre></div> <p>During macro expansion the value of the variable <i>test</i> is <i>(= (random 10) 0)</i> and the value of the variable <i>body</i> is <i>((write-line "Hello"))</i>. The body is a list of forms. </p><p>Symbols are usually automatically upcased. The expansion uses the TAGBODY with two labels. The symbols for these labels are computed by GENSYM and are not interned in any package. Two <i>go</i> forms use these tags to jump to. Since <i>tagbody</i> is a primitive operator in Common Lisp (and not a macro), it will not be expanded into something else. The expanded form uses the <i>when</i> macro, which also will be expanded. Fully expanding a source form is called <i>code walking</i>. </p><p>In the fully expanded (<i>walked</i>) form, the <i>when</i> form is replaced by the primitive <i>if</i>: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nv">TAGBODY</span> <span class="w"> </span><span class="ss">#:START1136</span> <span class="w"> </span><span class="p">(</span><span class="nv">IF</span><span class="w"> </span><span class="p">(</span><span class="nv">ZEROP</span><span class="w"> </span><span class="p">(</span><span class="nv">RANDOM</span><span class="w"> </span><span class="mi">10</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">PROGN</span><span class="w"> </span><span class="p">(</span><span class="nv">GO</span><span class="w"> </span><span class="ss">#:END1137</span><span class="p">))</span> <span class="w"> </span><span class="no">NIL</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">PROGN</span><span class="w"> </span><span class="p">(</span><span class="nv">WRITE-LINE</span><span class="w"> </span><span class="s">"hello"</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">GO</span><span class="w"> </span><span class="ss">#:START1136</span><span class="p">))</span> <span class="w"> </span><span class="ss">#:END1137</span><span class="p">)</span> </pre></div> <p>All macros must be expanded before the source code containing them can be evaluated or compiled normally. Macros can be considered functions that accept and return <a href="/wiki/S-expression" title="S-expression">S-expressions</a> – similar to <a href="/wiki/Abstract_syntax_tree" title="Abstract syntax tree">abstract syntax trees</a>, but not limited to those. These functions are invoked before the evaluator or compiler to produce the final source code. Macros are written in normal Common Lisp, and may use any Common Lisp (or third-party) operator available. </p> <div class="mw-heading mw-heading3"><h3 id="Variable_capture_and_shadowing">Variable capture and shadowing</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=20" title="Edit section: Variable capture and shadowing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp macros are capable of what is commonly called <i>variable capture</i>, where symbols in the macro-expansion body coincide with those in the calling context, allowing the programmer to create macros wherein various symbols have special meaning. The term <i>variable capture</i> is somewhat misleading, because all namespaces are vulnerable to unwanted capture, including the operator and function namespace, the tagbody label namespace, catch tag, condition handler and restart namespaces. </p><p><i>Variable capture</i> can introduce software defects. This happens in one of the following two ways: </p> <ul><li>In the first way, a macro expansion can inadvertently make a symbolic reference which the macro writer assumed will resolve in a global namespace, but the code where the macro is expanded happens to provide a local, shadowing definition which steals that reference. Let this be referred to as type 1 capture.</li> <li>The second way, type 2 capture, is just the opposite: some of the arguments of the macro are pieces of code supplied by the macro caller, and those pieces of code are written such that they make references to surrounding bindings. However, the macro inserts these pieces of code into an expansion which defines its own bindings that accidentally captures some of these references.</li></ul> <p>The Scheme dialect of Lisp provides a macro-writing system which provides the referential transparency that eliminates both types of capture problem. This type of macro system is sometimes called "hygienic", in particular by its proponents (who regard macro systems which do not automatically solve this problem as unhygienic). <sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (May 2011)">citation needed</span></a></i>]</sup> </p><p>In Common Lisp, macro hygiene is ensured one of two different ways. </p><p>One approach is to use <a href="/wiki/Gensym" class="mw-redirect" title="Gensym">gensyms</a>: guaranteed-unique symbols which can be used in a macro-expansion without threat of capture. The use of gensyms in a macro definition is a manual chore, but macros can be written which simplify the instantiation and use of gensyms. Gensyms solve type 2 capture easily, but they are not applicable to type 1 capture in the same way, because the macro expansion cannot rename the interfering symbols in the surrounding code which capture its references. Gensyms could be used to provide stable aliases for the global symbols which the macro expansion needs. The macro expansion would use these secret aliases rather than the well-known names, so redefinition of the well-known names would have no ill effect on the macro. </p><p>Another approach is to use packages. A macro defined in its own package can simply use internal symbols in that package in its expansion. The use of packages deals with type 1 and type 2 capture. </p><p>However, packages don't solve the type 1 capture of references to standard Common Lisp functions and operators. The reason is that the use of packages to solve capture problems revolves around the use of private symbols (symbols in one package, which are not imported into, or otherwise made visible in other packages). Whereas the Common Lisp library symbols are external, and frequently imported into or made visible in user-defined packages. </p><p>The following is an example of unwanted capture in the operator namespace, occurring in the expansion of a macro: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">;; expansion of UNTIL makes liberal use of DO</span> <span class="w"> </span><span class="p">(</span><span class="nb">defmacro</span><span class="w"> </span><span class="nv">until</span><span class="w"> </span><span class="p">(</span><span class="nv">expression</span><span class="w"> </span><span class="k">&body</span><span class="w"> </span><span class="nv">body</span><span class="p">)</span> <span class="w"> </span><span class="o">`</span><span class="p">(</span><span class="nb">do</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">(</span><span class="o">,</span><span class="nv">expression</span><span class="p">)</span><span class="w"> </span><span class="o">,@</span><span class="nv">body</span><span class="p">))</span> <span class="w"> </span><span class="c1">;; macrolet establishes lexical operator binding for DO</span> <span class="w"> </span><span class="p">(</span><span class="k">macrolet</span><span class="w"> </span><span class="p">((</span><span class="nb">do</span><span class="w"> </span><span class="p">(</span><span class="o">...</span><span class="p">)</span><span class="w"> </span><span class="o">...</span><span class="w"> </span><span class="nv">something</span><span class="w"> </span><span class="nv">else</span><span class="w"> </span><span class="o">...</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">until</span><span class="w"> </span><span class="p">(</span><span class="nb">=</span><span class="w"> </span><span class="p">(</span><span class="nb">random</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nb">write-line</span><span class="w"> </span><span class="s">"Hello"</span><span class="p">)))</span> </pre></div> <p>The <code>until</code> macro will expand into a form which calls <code>do</code> which is intended to refer to the standard Common Lisp macro <code>do</code>. However, in this context, <code>do</code> may have a completely different meaning, so <code>until</code> may not work properly. </p><p>Common Lisp solves the problem of the shadowing of standard operators and functions by forbidding their redefinition. Because it redefines the standard operator <code>do</code>, the preceding is actually a fragment of non-conforming Common Lisp, which allows implementations to diagnose and reject it. </p> <div class="mw-heading mw-heading2"><h2 id="Condition_system">Condition system</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=21" title="Edit section: Condition system"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <i>condition system</i> is responsible for <a href="/wiki/Exception_handling" title="Exception handling">exception handling</a> in Common Lisp.<sup id="cite_ref-Seibel2005_18-0" class="reference"><a href="#cite_note-Seibel2005-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> It provides <i>conditions</i>, <i>handler</i>s and <i>restart</i>s. <i>Condition</i>s are objects describing an exceptional situation (for example an error). If a <i>condition</i> is signaled, the Common Lisp system searches for a <i>handler</i> for this condition type and calls the handler. The <i>handler</i> can now search for restarts and use one of these restarts to automatically repair the current problem, using information such as the condition type and any relevant information provided as part of the condition object, and call the appropriate restart function. </p><p>These restarts, if unhandled by code, can be presented to users (as part of a user interface, that of a debugger for example), so that the user can select and invoke one of the available restarts. Since the condition handler is called in the context of the error (without unwinding the stack), full error recovery is possible in many cases, where other exception handling systems would have already terminated the current routine. The debugger itself can also be customized or replaced using the <code>*debugger-hook*</code> dynamic variable. Code found within <i>unwind-protect</i> forms such as finalizers will also be executed as appropriate despite the exception. </p><p>In the following example (using <a href="/wiki/Symbolics_Genera" class="mw-redirect" title="Symbolics Genera">Symbolics Genera</a>) the user tries to open a file in a Lisp function <i>test</i> called from the Read-Eval-Print-LOOP (<a href="/wiki/REPL" class="mw-redirect" title="REPL">REPL</a>), when the file does not exist. The Lisp system presents four restarts. The user selects the <i>Retry OPEN using a different pathname</i> restart and enters a different pathname (lispm-init.lisp instead of lispm-int.lisp). The user code does not contain any error handling code. The whole error handling and restart code is provided by the Lisp system, which can handle and repair the error without terminating the user code. </p> <div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>Command: (test ">zippy>lispm-int.lisp") Error: The file was not found. For lispm:>zippy>lispm-int.lisp.newest LMFS:OPEN-LOCAL-LMFS-1 Arg 0: #P"lispm:>zippy>lispm-int.lisp.newest" s-A, <Resume>: Retry OPEN of lispm:>zippy>lispm-int.lisp.newest s-B: Retry OPEN using a different pathname s-C, <Abort>: Return to Lisp Top Level in a TELNET server s-D: Restart process TELNET terminal -> Retry OPEN using a different pathname Use what pathname instead [default lispm:>zippy>lispm-int.lisp.newest]: lispm:>zippy>lispm-init.lisp.newest ...the program continues </pre></div> <div class="mw-heading mw-heading2"><h2 id="Common_Lisp_Object_System_(CLOS)"><span id="Common_Lisp_Object_System_.28CLOS.29"></span>Common Lisp Object System (CLOS)</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=22" title="Edit section: Common Lisp Object System (CLOS)"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a></div> <p>Common Lisp includes a toolkit for <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>, the Common Lisp Object System or <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">CLOS</a>. <a href="/wiki/Peter_Norvig" title="Peter Norvig">Peter Norvig</a> explains how many <a href="/wiki/Design_pattern_(computer_science)" class="mw-redirect" title="Design pattern (computer science)">Design Patterns</a> are simpler to implement in a dynamic language with the features of CLOS (Multiple Inheritance, Mixins, Multimethods, Metaclasses, Method combinations, etc.).<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> Several extensions to Common Lisp for object-oriented programming have been proposed to be included into the ANSI Common Lisp standard, but eventually CLOS was adopted as the standard object-system for Common Lisp. CLOS is a <a href="/wiki/Dynamic_programming_language" title="Dynamic programming language">dynamic</a> object system with <a href="/wiki/Multiple_dispatch" title="Multiple dispatch">multiple dispatch</a> and <a href="/wiki/Multiple_inheritance" title="Multiple inheritance">multiple inheritance</a>, and differs radically from the OOP facilities found in static languages such as <a href="/wiki/C%2B%2B" title="C++">C++</a> or <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>. As a dynamic object system, CLOS allows changes at runtime to generic functions and classes. Methods can be added and removed, classes can be added and redefined, objects can be updated for class changes and the class of objects can be changed. </p><p>CLOS has been integrated into ANSI Common Lisp. Generic functions can be used like normal functions and are a first-class data type. Every CLOS class is integrated into the Common Lisp type system. Many Common Lisp types have a corresponding class. There is more potential use of CLOS for Common Lisp. The specification does not say whether conditions are implemented with CLOS. Pathnames and streams could be implemented with CLOS. These further usage possibilities of CLOS for ANSI Common Lisp are not part of the standard. Actual Common Lisp implementations use CLOS for pathnames, streams, input–output, conditions, the implementation of CLOS itself and more. </p> <div class="mw-heading mw-heading2"><h2 id="Compiler_and_interpreter">Compiler and interpreter</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=23" title="Edit section: Compiler and interpreter"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A Lisp interpreter directly executes Lisp source code provided as Lisp objects (lists, symbols, numbers, ...) read from s-expressions. A Lisp compiler generates <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> or <a href="/wiki/Machine_code" title="Machine code">machine code</a> from Lisp source code. Common Lisp allows both individual Lisp functions to be compiled in memory and the compilation of whole files to externally stored compiled code (<i>fasl</i> files). </p><p>Several implementations of earlier Lisp dialects provided both an interpreter and a compiler. Unfortunately often the semantics were different. These earlier Lisps implemented lexical scoping in the compiler and dynamic scoping in the interpreter. Common Lisp requires that both the interpreter and compiler use lexical scoping by default. The Common Lisp standard describes both the semantics of the interpreter and a compiler. The compiler can be called using the function <i>compile</i> for individual functions and using the function <i>compile-file</i> for files. Common Lisp allows type declarations and provides ways to influence the compiler code generation policy. For the latter various optimization qualities can be given values between 0 (not important) and 3 (most important): <i>speed</i>, <i>space</i>, <i>safety</i>, <i>debug</i> and <i>compilation-speed</i>. </p><p>There is also a function to evaluate Lisp code: <code>eval</code>. <code>eval</code> takes code as pre-parsed s-expressions and not, like in some other languages, as text strings. This way code can be constructed with the usual Lisp functions for constructing lists and symbols and then this code can be evaluated with the function <code>eval</code>. Several Common Lisp implementations (like Clozure CL and SBCL) are implementing <code>eval</code> using their compiler. This way code is compiled, even though it is evaluated using the function <code>eval</code>. </p><p>The file compiler is invoked using the function <i>compile-file</i>. The generated file with compiled code is called a <i>fasl</i> (from <i>fast load</i>) file. These <i>fasl</i> files and also source code files can be loaded with the function <i>load</i> into a running Common Lisp system. Depending on the implementation, the file compiler generates byte-code (for example for the <a href="/wiki/Java_Virtual_Machine" class="mw-redirect" title="Java Virtual Machine">Java Virtual Machine</a>), <a href="/wiki/C_(programming_language)" title="C (programming language)">C language</a> code (which then is compiled with a C compiler) or, directly, native code. </p><p>Common Lisp implementations can be used interactively, even though the code gets fully compiled. The idea of an <a href="/wiki/Interpreted_language" class="mw-redirect" title="Interpreted language">Interpreted language</a> thus does not apply for interactive Common Lisp. </p><p>The language makes a distinction between read-time, compile-time, load-time, and run-time, and allows user code to also make this distinction to perform the wanted type of processing at the wanted step. </p><p>Some special operators are provided to especially suit interactive development; for instance, <code>defvar</code> will only assign a value to its provided variable if it wasn't already bound, while <code>defparameter</code> will always perform the assignment. This distinction is useful when interactively evaluating, compiling and loading code in a live image. </p><p>Some features are also provided to help writing compilers and interpreters. Symbols consist of first-level objects and are directly manipulable by user code. The <code>progv</code> special operator allows to create lexical bindings programmatically, while packages are also manipulable. The Lisp compiler is available at runtime to compile files or individual functions. These make it easy to use Lisp as an intermediate compiler or interpreter for another language. </p> <div class="mw-heading mw-heading2"><h2 id="Code_examples">Code examples</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=24" title="Edit section: Code examples"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Birthday_paradox">Birthday paradox</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=25" title="Edit section: Birthday paradox"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The following program calculates the smallest number of people in a room for whom the probability of unique birthdays is less than 50% (the <a href="/wiki/Birthday_paradox" class="mw-redirect" title="Birthday paradox">birthday paradox</a>, where for 1 person the probability is obviously 100%, for 2 it is 364/365, etc.). The answer is 23. </p><p>In Common Lisp, by convention, constants are enclosed with + characters. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defconstant</span><span class="w"> </span><span class="nv">+year-size+</span><span class="w"> </span><span class="mi">365</span><span class="p">)</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">birthday-paradox</span><span class="w"> </span><span class="p">(</span><span class="nv">probability</span><span class="w"> </span><span class="nv">number-of-people</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">((</span><span class="nv">new-probability</span><span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="p">(</span><span class="nb">/</span><span class="w"> </span><span class="p">(</span><span class="nb">-</span><span class="w"> </span><span class="nv">+year-size+</span><span class="w"> </span><span class="nv">number-of-people</span><span class="p">)</span> <span class="w"> </span><span class="nv">+year-size+</span><span class="p">)</span> <span class="w"> </span><span class="nv">probability</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nb"><</span><span class="w"> </span><span class="nv">new-probability</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">1+</span><span class="w"> </span><span class="nv">number-of-people</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">birthday-paradox</span><span class="w"> </span><span class="nv">new-probability</span><span class="w"> </span><span class="p">(</span><span class="nb">1+</span><span class="w"> </span><span class="nv">number-of-people</span><span class="p">)))))</span> </pre></div> <p>Calling the example function using the <a href="/wiki/REPL" class="mw-redirect" title="REPL">REPL</a> (Read Eval Print Loop): </p> <div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>CL-USER > (birthday-paradox 1.0 1) 23 </pre></div> <div class="mw-heading mw-heading3"><h3 id="Sorting_a_list_of_person_objects">Sorting a list of person objects</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=26" title="Edit section: Sorting a list of person objects"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>We define a class <code>person</code> and a method for displaying the name and age of a person. Next we define a group of persons as a list of <code>person</code> objects. Then we iterate over the sorted list. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defclass</span><span class="w"> </span><span class="nv">person</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="p">((</span><span class="nv">name</span><span class="w"> </span><span class="ss">:initarg</span><span class="w"> </span><span class="ss">:name</span><span class="w"> </span><span class="ss">:accessor</span><span class="w"> </span><span class="nv">person-name</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">age</span><span class="w"> </span><span class="ss">:initarg</span><span class="w"> </span><span class="ss">:age</span><span class="w"> </span><span class="ss">:accessor</span><span class="w"> </span><span class="nv">person-age</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="ss">:documentation</span><span class="w"> </span><span class="s">"The class PERSON with slots NAME and AGE."</span><span class="p">))</span> <span class="p">(</span><span class="nb">defmethod</span><span class="w"> </span><span class="nv">display</span><span class="w"> </span><span class="p">((</span><span class="nv">object</span><span class="w"> </span><span class="nv">person</span><span class="p">)</span><span class="w"> </span><span class="nc">stream</span><span class="p">)</span> <span class="w"> </span><span class="s">"Displaying a PERSON object to an output stream."</span> <span class="w"> </span><span class="p">(</span><span class="nb">with-slots</span><span class="w"> </span><span class="p">(</span><span class="nv">name</span><span class="w"> </span><span class="nv">age</span><span class="p">)</span><span class="w"> </span><span class="nv">object</span> <span class="w"> </span><span class="p">(</span><span class="nb">format</span><span class="w"> </span><span class="nc">stream</span><span class="w"> </span><span class="s">"~a (~a)"</span><span class="w"> </span><span class="nv">name</span><span class="w"> </span><span class="nv">age</span><span class="p">)))</span> <span class="p">(</span><span class="nb">defparameter</span><span class="w"> </span><span class="vg">*group*</span> <span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="p">(</span><span class="nb">make-instance</span><span class="w"> </span><span class="ss">'person</span><span class="w"> </span><span class="ss">:name</span><span class="w"> </span><span class="s">"Bob"</span><span class="w"> </span><span class="ss">:age</span><span class="w"> </span><span class="mi">33</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">make-instance</span><span class="w"> </span><span class="ss">'person</span><span class="w"> </span><span class="ss">:name</span><span class="w"> </span><span class="s">"Chris"</span><span class="w"> </span><span class="ss">:age</span><span class="w"> </span><span class="mi">16</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">make-instance</span><span class="w"> </span><span class="ss">'person</span><span class="w"> </span><span class="ss">:name</span><span class="w"> </span><span class="s">"Ash"</span><span class="w"> </span><span class="ss">:age</span><span class="w"> </span><span class="mi">23</span><span class="p">))</span> <span class="w"> </span><span class="s">"A list of PERSON objects."</span><span class="p">)</span> <span class="p">(</span><span class="nb">dolist</span><span class="w"> </span><span class="p">(</span><span class="nv">person</span><span class="w"> </span><span class="p">(</span><span class="nb">sort</span><span class="w"> </span><span class="p">(</span><span class="nb">copy-list</span><span class="w"> </span><span class="vg">*group*</span><span class="p">)</span> <span class="w"> </span><span class="nf">#'</span><span class="nb">></span> <span class="w"> </span><span class="ss">:key</span><span class="w"> </span><span class="nf">#'</span><span class="nv">person-age</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">display</span><span class="w"> </span><span class="nv">person</span><span class="w"> </span><span class="vg">*standard-output*</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">terpri</span><span class="p">))</span> </pre></div> <p>It prints the three names with descending age. </p> <div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>Bob (33) Ash (23) Chris (16) </pre></div> <div class="mw-heading mw-heading3"><h3 id="Exponentiating_by_squaring">Exponentiating by squaring</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=27" title="Edit section: Exponentiating by squaring"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Use of the LOOP macro is demonstrated: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">power</span><span class="w"> </span><span class="p">(</span><span class="nv">x</span><span class="w"> </span><span class="nv">n</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">loop</span><span class="w"> </span><span class="nv">with</span><span class="w"> </span><span class="nv">result</span><span class="w"> </span><span class="nb">=</span><span class="w"> </span><span class="mi">1</span> <span class="w"> </span><span class="nv">while</span><span class="w"> </span><span class="p">(</span><span class="nb">plusp</span><span class="w"> </span><span class="nv">n</span><span class="p">)</span> <span class="w"> </span><span class="nb">when</span><span class="w"> </span><span class="p">(</span><span class="nb">oddp</span><span class="w"> </span><span class="nv">n</span><span class="p">)</span><span class="w"> </span><span class="nb">do</span><span class="w"> </span><span class="p">(</span><span class="nb">setf</span><span class="w"> </span><span class="nv">result</span><span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">result</span><span class="w"> </span><span class="nv">x</span><span class="p">))</span> <span class="w"> </span><span class="nb">do</span><span class="w"> </span><span class="p">(</span><span class="nb">setf</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="p">(</span><span class="nb">*</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="nv">x</span><span class="p">)</span> <span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="p">(</span><span class="nb">truncate</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="mi">2</span><span class="p">))</span> <span class="w"> </span><span class="nv">finally</span><span class="w"> </span><span class="p">(</span><span class="nb">return</span><span class="w"> </span><span class="nv">result</span><span class="p">)))</span> </pre></div> <p>Example use: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">CL-USER</span><span class="w"> </span><span class="nb">></span><span class="w"> </span><span class="p">(</span><span class="nv">power</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">200</span><span class="p">)</span> <span class="mi">1606938044258990275541962092341162602522202993782792835301376</span> </pre></div> <p>Compare with the built in exponentiation: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">CL-USER</span><span class="w"> </span><span class="nb">></span><span class="w"> </span><span class="p">(</span><span class="nb">=</span><span class="w"> </span><span class="p">(</span><span class="nb">expt</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">200</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">power</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="mi">200</span><span class="p">))</span> <span class="no">T</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Find_the_list_of_available_shells">Find the list of available shells</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=28" title="Edit section: Find the list of available shells"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>WITH-OPEN-FILE is a macro that opens a file and provides a stream. When the form is returning, the file is automatically closed. FUNCALL calls a function object. The LOOP collects all lines that match the predicate. </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">list-matching-lines</span><span class="w"> </span><span class="p">(</span><span class="nv">file</span><span class="w"> </span><span class="nv">predicate</span><span class="p">)</span> <span class="w"> </span><span class="s">"Returns a list of lines in file, for which the predicate applied to</span> <span class="s"> the line returns T."</span> <span class="w"> </span><span class="p">(</span><span class="nb">with-open-file</span><span class="w"> </span><span class="p">(</span><span class="nc">stream</span><span class="w"> </span><span class="nv">file</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">loop</span><span class="w"> </span><span class="nv">for</span><span class="w"> </span><span class="nv">line</span><span class="w"> </span><span class="nb">=</span><span class="w"> </span><span class="p">(</span><span class="nb">read-line</span><span class="w"> </span><span class="nc">stream</span><span class="w"> </span><span class="no">nil</span><span class="w"> </span><span class="no">nil</span><span class="p">)</span> <span class="w"> </span><span class="nv">while</span><span class="w"> </span><span class="nv">line</span> <span class="w"> </span><span class="nb">when</span><span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">predicate</span><span class="w"> </span><span class="nv">line</span><span class="p">)</span> <span class="w"> </span><span class="nv">collect</span><span class="w"> </span><span class="nv">it</span><span class="p">)))</span> </pre></div> <p>The function AVAILABLE-SHELLS calls the above function LIST-MATCHING-LINES with a pathname and an anonymous function as the predicate. The predicate returns the pathname of a shell or NIL (if the string is not the filename of a shell). </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">available-shells</span><span class="w"> </span><span class="p">(</span><span class="k">&optional</span><span class="w"> </span><span class="p">(</span><span class="nv">file</span><span class="w"> </span><span class="l l-Other">#p"/etc/shells"</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">list-matching-lines</span> <span class="w"> </span><span class="nv">file</span> <span class="w"> </span><span class="p">(</span><span class="k">lambda</span><span class="w"> </span><span class="p">(</span><span class="nv">line</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">and</span><span class="w"> </span><span class="p">(</span><span class="nb">plusp</span><span class="w"> </span><span class="p">(</span><span class="nb">length</span><span class="w"> </span><span class="nv">line</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nb">char=</span><span class="w"> </span><span class="p">(</span><span class="nb">char</span><span class="w"> </span><span class="nv">line</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="sc">#\/</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">pathname</span> <span class="w"> </span><span class="p">(</span><span class="nb">string-right-trim</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="sc">#\space</span><span class="w"> </span><span class="sc">#\tab</span><span class="p">)</span><span class="w"> </span><span class="nv">line</span><span class="p">))))))</span> </pre></div> <p>Example results (on Mac OS X 10.6): </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">CL-USER</span><span class="w"> </span><span class="nb">></span><span class="w"> </span><span class="p">(</span><span class="nv">available-shells</span><span class="p">)</span> <span class="p">(</span><span class="l l-Other">#P"/bin/bash"</span><span class="w"> </span><span class="l l-Other">#P"/bin/csh"</span><span class="w"> </span><span class="l l-Other">#P"/bin/ksh"</span><span class="w"> </span><span class="l l-Other">#P"/bin/sh"</span><span class="w"> </span><span class="l l-Other">#P"/bin/tcsh"</span><span class="w"> </span><span class="l l-Other">#P"/bin/zsh"</span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Comparison_with_other_Lisps">Comparison with other Lisps</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=29" title="Edit section: Comparison with other Lisps"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Common Lisp is most frequently compared with, and contrasted to, <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>—if only because they are the two most popular Lisp dialects. Scheme predates CL, and comes not only from the same Lisp tradition but from some of the same engineers—<a href="/wiki/Guy_Steele" class="mw-redirect" title="Guy Steele">Guy Steele</a>, with whom <a href="/wiki/Gerald_Jay_Sussman" title="Gerald Jay Sussman">Gerald Jay Sussman</a> designed Scheme, chaired the standards committee for Common Lisp. </p><p>Common Lisp is a general-purpose programming language, in contrast to Lisp variants such as <a href="/wiki/Emacs_Lisp" title="Emacs Lisp">Emacs Lisp</a> and <a href="/wiki/AutoLISP" title="AutoLISP">AutoLISP</a> which are <a href="/wiki/Extension_languages" class="mw-redirect" title="Extension languages">extension languages</a> embedded in particular products (GNU Emacs and AutoCAD, respectively). Unlike many earlier Lisps, Common Lisp (like <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>) uses lexical variable <a href="/wiki/Scope_(programming)" class="mw-redirect" title="Scope (programming)">scope</a> by default for both interpreted and compiled code. </p><p>Most of the Lisp systems whose designs contributed to Common Lisp—such as <a href="/wiki/ZetaLisp" class="mw-redirect" title="ZetaLisp">ZetaLisp</a> and Franz Lisp—used dynamically <a href="/wiki/Scope_(programming)" class="mw-redirect" title="Scope (programming)">scoped</a> variables in their interpreters and lexically scoped variables in their compilers. Scheme introduced the sole use of lexically scoped variables to Lisp; an inspiration from <a href="/wiki/ALGOL_68" title="ALGOL 68">ALGOL 68</a>. CL supports dynamically scoped variables as well, but they must be explicitly declared as "special". There are no differences in scoping between ANSI CL interpreters and compilers. </p><p>Common Lisp is sometimes termed a <i>Lisp-2</i> and Scheme a <i>Lisp-1</i>, referring to CL's use of separate namespaces for functions and variables. (In fact, CL has <i>many</i> namespaces, such as those for go tags, block names, and <code>loop</code> keywords). There is a long-standing controversy between CL and Scheme advocates over the tradeoffs involved in multiple namespaces. In Scheme, it is (broadly) necessary to avoid giving variables names that clash with functions; Scheme functions frequently have arguments named <code>lis</code>, <code>lst</code>, or <code>lyst</code> so as not to conflict with the system function <code>list</code>. However, in CL it is necessary to explicitly refer to the function namespace when passing a function as an argument—which is also a common occurrence, as in the <code>sort</code> example above. </p><p>CL also differs from Scheme in its handling of Boolean values. Scheme uses the special values #t and #f to represent truth and falsity. CL follows the older Lisp convention of using the symbols T and NIL, with NIL standing also for the empty list. In CL, <i>any</i> non-NIL value is treated as true by conditionals, such as <code>if</code>, whereas in Scheme all non-#f values are treated as true. These conventions allow some operators in both languages to serve both as predicates (answering a Boolean-valued question) and as returning a useful value for further computation, but in Scheme the value '() which is equivalent to NIL in Common Lisp evaluates to true in a Boolean expression. </p><p>Lastly, the Scheme standards documents require <a href="/wiki/Tail_recursion" class="mw-redirect" title="Tail recursion">tail-call optimization</a>, which the CL standard does not. Most CL implementations do offer tail-call optimization, although often only when the programmer uses an optimization directive. Nonetheless, common CL coding style does not favor the ubiquitous use of recursion that Scheme style prefers—what a Scheme programmer would express with tail recursion, a CL user would usually express with an iterative expression in <code>do</code>, <code>dolist</code>, <code>loop</code>, or (more recently) with the <code>iterate</code> package. </p> <div class="mw-heading mw-heading2"><h2 id="Implementations">Implementations</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=30" title="Edit section: Implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>See the Category <a href="/wiki/Category:Common_Lisp_implementations" title="Category:Common Lisp implementations">Common Lisp implementations</a>. </p><p>Common Lisp is defined by a specification (like <a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada</a> and <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a>) rather than by one implementation (like <a href="/wiki/Perl" title="Perl">Perl</a>). There are many implementations, and the standard details areas in which they may validly differ. </p><p>In addition, implementations tend to come with extensions, which provide functionality not covered in the standard: </p> <ul><li>Interactive Top-Level (REPL)</li> <li>Garbage Collection</li> <li>Debugger, Stepper and Inspector</li> <li>Weak data structures (hash tables)</li> <li>Extensible sequences</li> <li>Extensible LOOP</li> <li>Environment access</li> <li>CLOS Meta-object Protocol</li> <li>CLOS based extensible streams</li> <li>CLOS based Condition System</li> <li>Network streams</li> <li>Persistent CLOS</li> <li>Unicode support</li> <li>Foreign-Language Interface (often to C)</li> <li>Operating System interface</li> <li>Java Interface</li> <li>Threads and Multiprocessing</li> <li>Application delivery (applications, dynamic libraries)</li> <li>Saving of images</li></ul> <p><a href="/wiki/Free_and_open-source_software" title="Free and open-source software">Free and open-source software</a> libraries have been created to support extensions to Common Lisp in a portable way, and are most notably found in the repositories of the Common-Lisp.net<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> and CLOCC (Common Lisp Open Code Collection)<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> projects. </p><p>Common Lisp implementations may use any mix of native code compilation, byte code compilation or interpretation. Common Lisp has been designed to support <a href="/wiki/Incremental_compiler" title="Incremental compiler">incremental compilers</a>, file compilers and block compilers. Standard declarations to optimize compilation (such as function inlining or type specialization) are proposed in the language specification. Most Common Lisp implementations compile source code to native <a href="/wiki/Machine_code" title="Machine code">machine code</a>. Some implementations can create (optimized) stand-alone applications. Others compile to interpreted <a href="/wiki/Bytecode" title="Bytecode">bytecode</a>, which is less efficient than native code, but eases binary-code portability. Some compilers compile Common Lisp code to C code. The misconception that Lisp is a purely interpreted language is most likely because Lisp environments provide an interactive prompt and that code is compiled one-by-one, in an incremental way. With Common Lisp incremental compilation is widely used. </p><p>Some <a href="/wiki/Unix" title="Unix">Unix</a>-based implementations (<a href="/wiki/CLISP" title="CLISP">CLISP</a>, <a href="/wiki/SBCL" class="mw-redirect" title="SBCL">SBCL</a>) can be used as a <a href="/wiki/Scripting_language" title="Scripting language">scripting language</a>; that is, invoked by the system transparently in the way that a <a href="/wiki/Perl" title="Perl">Perl</a> or <a href="/wiki/Unix_shell" title="Unix shell">Unix shell</a> interpreter is.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="List_of_implementations">List of implementations</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=31" title="Edit section: List of implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Commercial_implementations">Commercial implementations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=32" title="Edit section: Commercial implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Allegro Common Lisp</a></dt> <dd>for Microsoft Windows, FreeBSD, Linux, Apple macOS and various UNIX variants. Allegro CL provides an <a href="/wiki/Integrated_development_environment" title="Integrated development environment">Integrated Development Environment (IDE)</a> (for Windows and Linux) and extensive capabilities for application delivery.</dd> <dt><a href="/w/index.php?title=Liquid_Common_Lisp&action=edit&redlink=1" class="new" title="Liquid Common Lisp (page does not exist)">Liquid Common Lisp</a></dt> <dd>formerly called Lucid Common Lisp. Only maintenance, no new releases.</dd> <dt><a href="/wiki/LispWorks" title="LispWorks">LispWorks</a></dt> <dd>for Microsoft Windows, FreeBSD, Linux, Apple macOS, iOS, Android and various UNIX variants. LispWorks provides an <a href="/wiki/Integrated_development_environment" title="Integrated development environment">Integrated Development Environment (IDE)</a> (available for most platforms, but not for iOS and Android) and extensive capabilities for application delivery.</dd> <dt><a href="/wiki/Mocl" title="Mocl">mocl</a></dt> <dd>for iOS, Android and macOS.</dd> <dt><a href="/wiki/Open_Genera" class="mw-redirect" title="Open Genera">Open Genera</a></dt> <dd>for DEC Alpha.</dd> <dt><a href="/w/index.php?title=Scieneer_Common_Lisp&action=edit&redlink=1" class="new" title="Scieneer Common Lisp (page does not exist)">Scieneer Common Lisp</a></dt> <dd>which is designed for high-performance scientific computing.</dd></dl> <div class="mw-heading mw-heading4"><h4 id="Freely_redistributable_implementations">Freely redistributable implementations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=33" title="Edit section: Freely redistributable implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt>Armed Bear Common Lisp (ABCL)</dt> <dd>A CL implementation that runs on the <a href="/wiki/Java_Virtual_Machine" class="mw-redirect" title="Java Virtual Machine">Java Virtual Machine</a>.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> It includes a compiler to <a href="/wiki/Java_byte_code" class="mw-redirect" title="Java byte code">Java byte code</a>, and allows access to Java libraries from CL. It was formerly just a component of the <a href="/w/index.php?title=Armed_Bear_J_Editor&action=edit&redlink=1" class="new" title="Armed Bear J Editor (page does not exist)">Armed Bear J Editor</a>.</dd> <dt><a href="/w/index.php?title=Clasp_(Common_Lisp)&action=edit&redlink=1" class="new" title="Clasp (Common Lisp) (page does not exist)">Clasp</a></dt> <dd>A LLVM based implementation that seamlessly interoperates with C++ libraries. Runs on several Unix and Unix-like systems (including <a href="/wiki/MacOS" title="MacOS">macOS</a>).</dd> <dt><a href="/wiki/CLISP" title="CLISP">CLISP</a></dt> <dd>A bytecode-compiling implementation, portable and runs on several Unix and Unix-like systems (including <a href="/wiki/MacOS" title="MacOS">macOS</a>), as well as Microsoft Windows and several other systems.</dd> <dt><a href="/wiki/Clozure_CL" title="Clozure CL">Clozure CL</a> (CCL)</dt> <dd>Originally a <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source</a> fork of Macintosh Common Lisp. As that history implies, CCL was written for the Macintosh, but Clozure CL now runs on <a href="/wiki/MacOS" title="MacOS">macOS</a>, <a href="/wiki/FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="/wiki/Linux" title="Linux">Linux</a>, <a href="/wiki/Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a> and <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a>. 32 and 64 bit <a href="/wiki/X86" title="X86">x86</a> ports are supported on each platform. Additionally there are Power PC ports for Mac OS and Linux. CCL was previously known as OpenMCL, but that name is no longer used, to avoid confusion with the open source version of Macintosh Common Lisp.</dd> <dt><a href="/wiki/CMUCL" class="mw-redirect" title="CMUCL">CMUCL</a></dt> <dd>Originally from <a href="/wiki/Carnegie_Mellon_University" title="Carnegie Mellon University">Carnegie Mellon University</a>, now maintained as <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source software</a> by a group of volunteers. CMUCL uses a fast native-code compiler. It is available on <a href="/wiki/Linux" title="Linux">Linux</a> and <a href="/wiki/Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> for Intel x86; <a href="/wiki/Linux" title="Linux">Linux</a> for Alpha; <a href="/wiki/MacOS" title="MacOS">macOS</a> for Intel x86 and PowerPC; and Solaris, IRIX, and HP-UX on their native platforms.</dd> <dt><a href="/wiki/Corman_Common_Lisp" class="mw-redirect" title="Corman Common Lisp">Corman Common Lisp</a></dt> <dd>for Microsoft Windows. In January 2015 Corman Lisp has been published under MIT license.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup></dd> <dt><a href="/wiki/Embeddable_Common_Lisp" title="Embeddable Common Lisp">Embeddable Common Lisp</a> (ECL)</dt> <dd>ECL includes a bytecode interpreter and compiler. It can also compile Lisp code to machine code via a C compiler. ECL then compiles Lisp code to C, compiles the C code with a C compiler and can then load the resulting machine code. It is also possible to embed ECL in <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> programs, and C code into Common Lisp programs.</dd> <dt><a href="/wiki/GNU_Common_Lisp" title="GNU Common Lisp">GNU Common Lisp</a> (GCL)</dt> <dd>The <a href="/wiki/GNU" title="GNU">GNU</a> Project's Lisp compiler. Not yet fully ANSI-compliant, GCL is however the implementation of choice for several large projects including the mathematical tools <a href="/wiki/Maxima_(software)" title="Maxima (software)">Maxima</a>, <a href="/wiki/Axiom_(computer_algebra_system)" title="Axiom (computer algebra system)">AXIOM</a> and (historically) <a href="/wiki/ACL2" title="ACL2">ACL2</a>. GCL runs on <a href="/wiki/Linux" title="Linux">Linux</a> under eleven different architectures, and also under Windows, Solaris, and <a href="/wiki/FreeBSD" title="FreeBSD">FreeBSD</a>.</dd> <dt><a href="/wiki/Macintosh_Common_Lisp" title="Macintosh Common Lisp">Macintosh Common Lisp</a> (MCL)</dt> <dd>Version 5.2 for Apple Macintosh computers with a PowerPC processor running Mac OS X is open source. RMCL (based on MCL 5.2) runs on Intel-based Apple Macintosh computers using the Rosetta binary translator from Apple.</dd> <dt><a href="/w/index.php?title=ManKai_Common_Lisp&action=edit&redlink=1" class="new" title="ManKai Common Lisp (page does not exist)">ManKai Common Lisp</a> (MKCL)</dt> <dd>A branch of <a href="/wiki/Embeddable_Common_Lisp" title="Embeddable Common Lisp">ECL</a>. MKCL emphasises reliability, stability and overall code quality through a heavily reworked, natively multi-threaded, runtime system. On Linux, MKCL features a fully POSIX compliant runtime system.</dd> <dt>Movitz</dt> <dd>Implements a Lisp environment for <a href="/wiki/X86" title="X86">x86</a> computers without relying on any underlying OS.</dd> <dt><a href="/wiki/Poplog" title="Poplog">Poplog</a></dt> <dd>Poplog implements a version of CL, with <a href="/wiki/POP-11" title="POP-11">POP-11</a>, and optionally <a href="/wiki/Prolog" title="Prolog">Prolog</a>, and <a href="/wiki/Standard_ML" title="Standard ML">Standard ML</a> (SML), allowing mixed language programming. For all, the implementation language is POP-11, which is compiled incrementally. It also has an integrated <a href="/wiki/Emacs" title="Emacs">Emacs</a>-like editor that communicates with the compiler.</dd> <dt><a href="/wiki/Steel_Bank_Common_Lisp" title="Steel Bank Common Lisp">Steel Bank Common Lisp</a> (SBCL)</dt> <dd>A branch from <a href="/wiki/CMUCL" class="mw-redirect" title="CMUCL">CMUCL</a>. "Broadly speaking, SBCL is distinguished from CMU CL by a greater emphasis on maintainability."<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup> SBCL runs on the platforms CMUCL does, except HP/UX; in addition, it runs on Linux for AMD64, PowerPC, SPARC, MIPS, Windows x86 and AMD64.<sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> SBCL does not use an interpreter by default; all expressions are compiled to native code unless the user switches the interpreter on. The SBCL compiler generates fast native code according to a previous version of <a href="/wiki/The_Computer_Language_Benchmarks_Game" title="The Computer Language Benchmarks Game">The Computer Language Benchmarks Game</a>.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup></dd> <dt><a href="/w/index.php?title=Ufasoft_Common_Lisp&action=edit&redlink=1" class="new" title="Ufasoft Common Lisp (page does not exist)">Ufasoft Common Lisp</a></dt> <dd>port of CLISP for windows platform with core written in C++.</dd></dl> <div class="mw-heading mw-heading4"><h4 id="Other_implementations">Other implementations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=34" title="Edit section: Other implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-More_citations_needed_section plainlinks metadata ambox ambox-content ambox-Refimprove" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>needs additional citations for <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">verification</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Common_Lisp" title="Special:EditPage/Common Lisp">improve this article</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a> in this section. Unsourced material may be challenged and removed.</span> <span class="date-container"><i>(<span class="date">July 2018</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <dl><dt>Austin Kyoto Common Lisp</dt> <dd>an evolution of <a href="/wiki/Kyoto_Common_Lisp" title="Kyoto Common Lisp">Kyoto Common Lisp</a> by <a href="/wiki/Bill_Schelter" title="Bill Schelter">Bill Schelter</a></dd> <dt>Butterfly Common Lisp</dt> <dd>an implementation written in Scheme for the <a href="/wiki/BBN_Butterfly" title="BBN Butterfly">BBN Butterfly</a> multi-processor computer<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup></dd> <dt>CLICC</dt> <dd>a Common Lisp to C compiler<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup></dd> <dt>CLOE</dt> <dd>Common Lisp for PCs by <a href="/wiki/Symbolics" title="Symbolics">Symbolics</a></dd> <dt>Codemist Common Lisp</dt> <dd>used for the commercial version of the computer algebra system Axiom<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup></dd> <dt>ExperCommon Lisp</dt> <dd>an early implementation for the Apple Macintosh by ExperTelligence</dd> <dt><a href="/w/index.php?title=Golden_Common_Lisp&action=edit&redlink=1" class="new" title="Golden Common Lisp (page does not exist)">Golden Common Lisp</a></dt> <dd>an implementation for the PC by GoldHill Inc.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup></dd> <dt>Ibuki Common Lisp</dt> <dd>a commercialized version of Kyoto Common Lisp</dd> <dt><a href="/wiki/Kyoto_Common_Lisp" title="Kyoto Common Lisp">Kyoto Common Lisp</a></dt> <dd>the first Common Lisp compiler that used C as a target language. GCL, ECL and MKCL originate from this Common Lisp implementation.</dd> <dt>L</dt> <dd>a small version of Common Lisp for embedded systems developed by IS Robotics, now iRobot<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup></dd> <dt><a href="/wiki/Lisp_Machine" class="mw-redirect" title="Lisp Machine">Lisp Machines</a> (from <a href="/wiki/Symbolics" title="Symbolics">Symbolics</a>, TI<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup> and Xerox<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>)</dt> <dd>provided implementations of Common Lisp in addition to their native Lisp dialect (Lisp Machine Lisp or Interlisp). CLOS was also available. Symbolics provides an enhanced version Common Lisp.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup></dd> <dt>Procyon Common Lisp</dt> <dd>an implementation for Windows and Mac OS, used by Franz for their Windows port of Allegro CL</dd> <dt>Star Sapphire Common LISP</dt> <dd>an implementation for the PC</dd> <dt><a href="/wiki/SubL" class="mw-redirect" title="SubL">SubL</a></dt> <dd>a variant of Common Lisp used for the implementation of the <a href="/wiki/Cyc" title="Cyc">Cyc</a> knowledge-based system<sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup></dd> <dt>Top Level Common Lisp</dt> <dd>an early implementation for concurrent execution<sup id="cite_ref-43" class="reference"><a href="#cite_note-43"><span class="cite-bracket">[</span>43<span class="cite-bracket">]</span></a></sup></dd> <dt>WCL</dt> <dd>a shared library implementation<sup id="cite_ref-44" class="reference"><a href="#cite_note-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>45<span class="cite-bracket">]</span></a></sup></dd> <dt><a href="/wiki/VAX_Common_Lisp" title="VAX Common Lisp">VAX Common Lisp</a></dt> <dd><a href="/wiki/Digital_Equipment_Corporation" title="Digital Equipment Corporation">Digital Equipment Corporation</a>'s implementation that ran on <a href="/wiki/VAX" title="VAX">VAX</a> systems running <a href="/wiki/OpenVMS" title="OpenVMS">VMS</a> or <a href="/wiki/ULTRIX" class="mw-redirect" title="ULTRIX">ULTRIX</a></dd> <dt>XLISP</dt> <dd>an implementation written by David Betz<sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>46<span class="cite-bracket">]</span></a></sup></dd></dl> <div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=35" title="Edit section: Applications"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable selfref">See also: <a href="/wiki/Category:Common_Lisp_(programming_language)_software" title="Category:Common Lisp (programming language) software">Category:Common Lisp (programming language) software</a></div> <p>Common Lisp is used to develop research applications (often in <a href="/wiki/Artificial_Intelligence" class="mw-redirect" title="Artificial Intelligence">Artificial Intelligence</a>), for rapid development of prototypes or for deployed applications. </p><p>Common Lisp is used in many commercial applications, including the <a href="/wiki/Yahoo!" class="mw-redirect" title="Yahoo!">Yahoo!</a> Store web-commerce site, which originally involved <a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Paul Graham</a> and was later rewritten in <a href="/wiki/C%2B%2B" title="C++">C++</a> and <a href="/wiki/Perl" title="Perl">Perl</a>.<sup id="cite_ref-47" class="reference"><a href="#cite_note-47"><span class="cite-bracket">[</span>47<span class="cite-bracket">]</span></a></sup> Other notable examples include: </p> <ul><li><a href="/wiki/ACT-R" title="ACT-R">ACT-R</a>, a cognitive architecture used in a large number of research projects.</li> <li>Authorizer's Assistant,<sup id="cite_ref-48" class="reference"><a href="#cite_note-48"><span class="cite-bracket">[</span>48<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-49" class="reference"><a href="#cite_note-49"><span class="cite-bracket">[</span>49<span class="cite-bracket">]</span></a></sup> a large rule-based system used by American Express, analyzing credit requests.</li> <li><a href="/wiki/Cyc" title="Cyc">Cyc</a>, a long running project to create a knowledge-based system that provides a huge amount of common sense knowledge.</li> <li><a href="/w/index.php?title=Gensym_G2&action=edit&redlink=1" class="new" title="Gensym G2 (page does not exist)">Gensym G2</a>, a real-time expert system and <a href="/wiki/Business_rules_engine" title="Business rules engine">business rules engine</a><sup id="cite_ref-50" class="reference"><a href="#cite_note-50"><span class="cite-bracket">[</span>50<span class="cite-bracket">]</span></a></sup></li> <li>Genworks GDL,<sup id="cite_ref-51" class="reference"><a href="#cite_note-51"><span class="cite-bracket">[</span>51<span class="cite-bracket">]</span></a></sup> based on the open-source Gendl kernel.</li> <li>The development environment for the <i><a href="/wiki/Jak_and_Daxter" title="Jak and Daxter">Jak and Daxter</a></i> video game series, developed by <a href="/wiki/Naughty_Dog" title="Naughty Dog">Naughty Dog</a>.</li> <li><a href="/wiki/ITA_Software" title="ITA Software">ITA Software</a>'s low fare search engine, used by travel websites such as <a href="/wiki/Orbitz" title="Orbitz">Orbitz</a> and <a href="/wiki/Kayak.com" class="mw-redirect" title="Kayak.com">Kayak.com</a> and airlines such as <a href="/wiki/American_Airlines" title="American Airlines">American Airlines</a>, <a href="/wiki/Continental_Airlines" title="Continental Airlines">Continental Airlines</a> and <a href="/wiki/US_Airways" title="US Airways">US Airways</a>.</li> <li><a href="/wiki/Mirai_(software)" title="Mirai (software)">Mirai</a>, a 3D graphics suite. It was used to animate the face of <a href="/wiki/Gollum" title="Gollum">Gollum</a> in the movie <i><a href="/wiki/Lord_of_the_Rings:_The_Two_Towers" class="mw-redirect" title="Lord of the Rings: The Two Towers">Lord of the Rings: The Two Towers</a></i>.</li> <li>Opusmodus is a music composition system based on Common Lisp, used in <a href="/wiki/Computer_assisted_composition" class="mw-redirect" title="Computer assisted composition">Computer assisted composition</a>.<sup id="cite_ref-52" class="reference"><a href="#cite_note-52"><span class="cite-bracket">[</span>52<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/Prototype_Verification_System" title="Prototype Verification System">Prototype Verification System</a> (PVS), a mechanized environment for formal specification and verification.</li> <li>PWGL is a sophisticated visual programming environment based on Common Lisp, used in <a href="/wiki/Computer_assisted_composition" class="mw-redirect" title="Computer assisted composition">Computer assisted composition</a> and sound synthesis.<sup id="cite_ref-53" class="reference"><a href="#cite_note-53"><span class="cite-bracket">[</span>53<span class="cite-bracket">]</span></a></sup></li> <li>Piano, a complete aircraft analysis suite, written in Common Lisp,<sup id="cite_ref-lisp-lang.org_54-0" class="reference"><a href="#cite_note-lisp-lang.org-54"><span class="cite-bracket">[</span>54<span class="cite-bracket">]</span></a></sup> used by companies like <a href="/wiki/Boeing" title="Boeing">Boeing</a>, <a href="/wiki/Airbus" title="Airbus">Airbus</a>, and <a href="/wiki/Northrop_Grumman" title="Northrop Grumman">Northrop Grumman</a>.<sup id="cite_ref-55" class="reference"><a href="#cite_note-55"><span class="cite-bracket">[</span>55<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/Grammarly" title="Grammarly">Grammarly</a>, an English-language writing-enhancement platform, has its core grammar engine written in Common Lisp.<sup id="cite_ref-56" class="reference"><a href="#cite_note-56"><span class="cite-bracket">[</span>56<span class="cite-bracket">]</span></a></sup></li> <li>The <a href="/wiki/Dynamic_Analysis_and_Replanning_Tool" title="Dynamic Analysis and Replanning Tool">Dynamic Analysis and Replanning Tool</a> (DART), which is said to alone have paid back during the years from 1991 to 1995 for all thirty years of <a href="/wiki/DARPA" title="DARPA">DARPA</a> investments in AI research.</li> <li><a href="/wiki/NASA" title="NASA">NASA</a>'s <a href="/wiki/Jet_Propulsion_Lab" class="mw-redirect" title="Jet Propulsion Lab">Jet Propulsion Lab</a>'s "<a href="/wiki/Deep_Space_1" title="Deep Space 1">Deep Space 1</a>", an award-winning<sup id="cite_ref-57" class="reference"><a href="#cite_note-57"><span class="cite-bracket">[</span>57<span class="cite-bracket">]</span></a></sup> Common Lisp<sup id="cite_ref-58" class="reference"><a href="#cite_note-58"><span class="cite-bracket">[</span>58<span class="cite-bracket">]</span></a></sup> program for autopiloting the <a href="/wiki/Deep_Space_One" class="mw-redirect" title="Deep Space One">Deep Space One</a> spaceship.</li> <li>SigLab, a Common Lisp platform for signal processing used in missile defense, built by <a href="/wiki/Raytheon" title="Raytheon">Raytheon</a>.<sup id="cite_ref-lisp-lang.org_54-1" class="reference"><a href="#cite_note-lisp-lang.org-54"><span class="cite-bracket">[</span>54<span class="cite-bracket">]</span></a></sup></li> <li>NASA's <a href="/wiki/Mars_Pathfinder" title="Mars Pathfinder">Mars Pathfinder</a> Mission Planning System.<sup id="cite_ref-59" class="reference"><a href="#cite_note-59"><span class="cite-bracket">[</span>59<span class="cite-bracket">]</span></a></sup></li> <li>SPIKE, a scheduling system for Earth or space based observatories and satellites, notably the <a href="/wiki/Hubble_Space_Telescope" title="Hubble Space Telescope">Hubble Space Telescope</a>,<sup id="cite_ref-60" class="reference"><a href="#cite_note-60"><span class="cite-bracket">[</span>60<span class="cite-bracket">]</span></a></sup> written in Common Lisp.<sup id="cite_ref-61" class="reference"><a href="#cite_note-61"><span class="cite-bracket">[</span>61<span class="cite-bracket">]</span></a></sup></li> <li>Common Lisp has been used for prototyping the garbage collector of Microsoft's <a href="/wiki/.NET_Framework" title=".NET Framework">.NET</a> <a href="/wiki/Common_Language_Runtime" title="Common Language Runtime">Common Language Runtime</a>.<sup id="cite_ref-62" class="reference"><a href="#cite_note-62"><span class="cite-bracket">[</span>62<span class="cite-bracket">]</span></a></sup></li> <li>The original version of <a href="/wiki/Reddit" title="Reddit">Reddit</a>, though the developers later switched to <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a> due to the lack of libraries for Common Lisp, according to an official blog post by Reddit co-founder <a href="/wiki/Steve_Huffman" title="Steve Huffman">Steve Huffman</a>.<sup id="cite_ref-63" class="reference"><a href="#cite_note-63"><span class="cite-bracket">[</span>63<span class="cite-bracket">]</span></a></sup></li></ul> <p>There also exist open-source applications written in Common Lisp, such as: </p> <ul><li><a href="/wiki/ACL2" title="ACL2">ACL2</a>, a full-featured <a href="/wiki/Automated_theorem_prover" class="mw-redirect" title="Automated theorem prover">automated theorem prover</a> for an <a href="/wiki/Applicative_programming_language" title="Applicative programming language">applicative</a> variant of Common Lisp.</li> <li><a href="/wiki/Axiom_(computer_algebra_system)" title="Axiom (computer algebra system)">Axiom</a>, a sophisticated <a href="/wiki/Computer_algebra_system" title="Computer algebra system">computer algebra system</a>.</li> <li><a href="/wiki/Maxima_(software)" title="Maxima (software)">Maxima</a>, a sophisticated <a href="/wiki/Computer_algebra_system" title="Computer algebra system">computer algebra system</a>, based on Macsyma.</li> <li><a href="/wiki/OpenMusic" title="OpenMusic">OpenMusic</a>, an object-oriented visual programming environment based on Common Lisp, used in <a href="/wiki/Computer_assisted_composition" class="mw-redirect" title="Computer assisted composition">computer assisted composition</a>.</li> <li>Pgloader,<sup id="cite_ref-64" class="reference"><a href="#cite_note-64"><span class="cite-bracket">[</span>64<span class="cite-bracket">]</span></a></sup> a data loader for <a href="/wiki/PostgreSQL" title="PostgreSQL">PostgreSQL</a>, which was re-written from Python to Common Lisp.<sup id="cite_ref-65" class="reference"><a href="#cite_note-65"><span class="cite-bracket">[</span>65<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/Stumpwm" class="mw-redirect" title="Stumpwm">Stumpwm</a>, a tiling, keyboard driven X11 Window Manager written entirely in Common Lisp.</li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=36" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239009302">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{clear:left;float:left;margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Octicons-terminal.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/24px-Octicons-terminal.svg.png" decoding="async" width="24" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/37px-Octicons-terminal.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/49px-Octicons-terminal.svg.png 2x" data-file-width="896" data-file-height="1024" /></a></span></span><span class="portalbox-link"><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></span></li></ul> <ul><li><i><a href="/wiki/Common_Lisp_the_Language" title="Common Lisp the Language">Common Lisp the Language</a></i></li> <li><i><a href="/wiki/On_Lisp" title="On Lisp">On Lisp</a></i></li> <li><i><a href="/wiki/Practical_Common_Lisp" title="Practical Common Lisp">Practical Common Lisp</a></i></li></ul> <div style="clear:both;" class=""></div> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=37" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://share.ansi.org/Shared%20Documents/Standards%20Action/2018-PDFs/SAV4952.pdf#page=10">"ANSI Standards Action - December 28, 2018"</a> <span class="cs1-format">(PDF)</span>. <i>ansi.org</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210412125343/https://share.ansi.org/Shared%20Documents/Standards%20Action/2018-PDFs/SAV4952.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on April 12, 2021.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ansi.org&rft.atitle=ANSI+Standards+Action+-+December+28%2C+2018&rft_id=https%3A%2F%2Fshare.ansi.org%2FShared%2520Documents%2FStandards%2520Action%2F2018-PDFs%2FSAV4952.pdf%23page%3D10&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Quoted from cover of cited standard. ANSI INCITS 226-1994 [S2008], for sale on standard's <a rel="nofollow" class="external text" href="https://webstore.ansi.org/Standards/INCITS/INCITS2261994S2008">document page</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20200927024609/https://webstore.ansi.org/Standards/INCITS/INCITS2261994S2008">Archived</a> September 27, 2020, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm#Authorship">"CLHS: About the Common Lisp HyperSpec (TM)"</a>. <i>lispworks.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=lispworks.com&rft.atitle=CLHS%3A+About+the+Common+Lisp+HyperSpec+%28TM%29&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FFront%2FHelp.htm%23Authorship&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/01_ab.htm">"CLHS: Section 1.1.2"</a>. <i>lispworks.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=lispworks.com&rft.atitle=CLHS%3A+Section+1.1.2&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FBody%2F01_ab.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120421181340/http://common-lisp.net/~dlw/LispSurvey.html">"Common Lisp Implementations: A Survey"</a>. Archived from <a rel="nofollow" class="external text" href="http://common-lisp.net/~dlw/LispSurvey.html">the original</a> on April 21, 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">December 22,</span> 2007</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common+Lisp+Implementations%3A+A+Survey&rft_id=http%3A%2F%2Fcommon-lisp.net%2F~dlw%2FLispSurvey.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/wang.html">"Old LISP programs still run in Common Lisp"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">May 13,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Old+LISP+programs+still+run+in+Common+Lisp&rft_id=http%3A%2F%2Fwww.informatimago.com%2Fdevelop%2Flisp%2Fcom%2Finformatimago%2Fsmall-cl-pgms%2Fwang.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/doc/history/cl.txt">"Roots of "Yu-Shiang Lisp", Mail from Jon L White, 1982"</a>. <i>cmu.edu</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cmu.edu&rft.atitle=Roots+of+%22Yu-Shiang+Lisp%22%2C+Mail+from+Jon+L+White%2C+1982&rft_id=https%3A%2F%2Fwww.cs.cmu.edu%2Fafs%2Fcs%2Fproject%2Fai-repository%2Fai%2Flang%2Flisp%2Fdoc%2Fhistory%2Fcl.txt&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://cl-su-ai.lisp.se/maillist.html">"Mail Index"</a>. <i>cl-su-ai.lisp.se</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cl-su-ai.lisp.se&rft.atitle=Mail+Index&rft_id=http%3A%2F%2Fcl-su-ai.lisp.se%2Fmaillist.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://ccs.mit.edu/papers/CCSWP150.html">Knee-jerk Anti-LOOPism and other E-mail Phenomena: Oral, Written, and Electronic Patterns in Computer-Mediated Communication, JoAnne Yates and Wanda J. Orlikowski., 1993</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120808032049/http://ccs.mit.edu/papers/CCSWP150.html">Archived</a> August 8, 2012, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSteele1982" class="citation book cs1">Steele, Guy L. Jr. (August 15, 1982). "An overview of COMMON LISP". <i>Proceedings of the 1982 ACM symposium on LISP and functional programming - LFP '82</i>. ACM. pp. 98–107. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F800068.802140">10.1145/800068.802140</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9780897910828" title="Special:BookSources/9780897910828"><bdi>9780897910828</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:14517358">14517358</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=An+overview+of+COMMON+LISP&rft.btitle=Proceedings+of+the+1982+ACM+symposium+on+LISP+and+functional+programming+-+LFP+%2782&rft.pages=98-107&rft.pub=ACM&rft.date=1982-08-15&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A14517358%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1145%2F800068.802140&rft.isbn=9780897910828&rft.aulast=Steele&rft.aufirst=Guy+L.+Jr.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-reddy-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-reddy_11-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFReddy2008" class="citation web cs1">Reddy, Abhishek (August 22, 2008). <a rel="nofollow" class="external text" href="http://random-state.net/features-of-common-lisp.html">"Features of Common Lisp"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Features+of+Common+Lisp&rft.date=2008-08-22&rft.aulast=Reddy&rft.aufirst=Abhishek&rft_id=http%3A%2F%2Frandom-state.net%2Ffeatures-of-common-lisp.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.cliki.net/Unicode%20Support">"Unicode support"</a>. <i>The Common Lisp Wiki</i><span class="reference-accessdate">. Retrieved <span class="nowrap">August 21,</span> 2008</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=The+Common+Lisp+Wiki&rft.atitle=Unicode+support&rft_id=http%3A%2F%2Fwww.cliki.net%2FUnicode%2520Support&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFRichard_P._GabrielKent_M._Pitman1988" class="citation journal cs1">Richard P. Gabriel; Kent M. Pitman (June 1988). <a rel="nofollow" class="external text" href="http://www.nhplace.com/kent/Papers/Technical-Issues.html">"Technical Issues of Separation in Function Cells and Value Cells"</a>. <i>LISP and Symbolic Computation</i>. <b>1</b> (1): 81–101. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fbf01806178">10.1007/bf01806178</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:26716515">26716515</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=LISP+and+Symbolic+Computation&rft.atitle=Technical+Issues+of+Separation+in+Function+Cells+and+Value+Cells&rft.volume=1&rft.issue=1&rft.pages=81-101&rft.date=1988-06&rft_id=info%3Adoi%2F10.1007%2Fbf01806178&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A26716515%23id-name%3DS2CID&rft.au=Richard+P.+Gabriel&rft.au=Kent+M.+Pitman&rft_id=http%3A%2F%2Fwww.nhplace.com%2Fkent%2FPapers%2FTechnical-Issues.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/03_ag.htm">"Common Lisp Hyperspec: Section 3.1.7"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common+Lisp+Hyperspec%3A+Section+3.1.7&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FBody%2F03_ag.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/f_floorc.htm">"Common Lisp Hyperspec: Function FLOOR"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common+Lisp+Hyperspec%3A+Function+FLOOR&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FBody%2Ff_floorc.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/f_gethas.htm">"Common Lisp Hyperspec: Accessor GETHASH"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common+Lisp+Hyperspec%3A+Accessor+GETHASH&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FBody%2Ff_gethas.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://letoverlambda.com/index.cl/guest/chap2.html">"Let Over Lambda"</a>. <i>letoverlambda.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=letoverlambda.com&rft.atitle=Let+Over+Lambda&rft_id=http%3A%2F%2Fletoverlambda.com%2Findex.cl%2Fguest%2Fchap2.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-Seibel2005-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-Seibel2005_18-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPeter_Seibel2005" class="citation book cs1">Peter Seibel (April 7, 2005). <a rel="nofollow" class="external text" href="http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html"><i>Practical Common Lisp</i></a>. Apress. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-59059-239-7" title="Special:BookSources/978-1-59059-239-7"><bdi>978-1-59059-239-7</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Practical+Common+Lisp&rft.pub=Apress&rft.date=2005-04-07&rft.isbn=978-1-59059-239-7&rft.au=Peter+Seibel&rft_id=http%3A%2F%2Fwww.gigamonkeys.com%2Fbook%2Fbeyond-exception-handling-conditions-and-restarts.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://norvig.com/design-patterns/ppframe.htm">"Design Patterns in Dynamic Programming"</a>. <i>norvig.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=norvig.com&rft.atitle=Design+Patterns+in+Dynamic+Programming&rft_id=http%3A%2F%2Fnorvig.com%2Fdesign-patterns%2Fppframe.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://common-lisp.net/">"Common-Lisp.net"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common-Lisp.net&rft_id=http%3A%2F%2Fcommon-lisp.net%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://clocc.sourceforge.net/">"Common Lisp Open Code Collection"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Common+Lisp+Open+Code+Collection&rft_id=http%3A%2F%2Fclocc.sourceforge.net%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://clisp.cons.org/impnotes/quickstart.html#quickstart-unix">"32.6. Quickstarting delivery with CLISP"</a>. <i>clisp.cons.org</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=clisp.cons.org&rft.atitle=32.6.+Quickstarting+delivery+with+CLISP&rft_id=http%3A%2F%2Fclisp.cons.org%2Fimpnotes%2Fquickstart.html%23quickstart-unix&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://common-lisp.net/project/armedbear/">"Armed Bear Common Lisp"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Armed+Bear+Common+Lisp&rft_id=http%3A%2F%2Fcommon-lisp.net%2Fproject%2Farmedbear%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://lispblog.xach.com/post/107215169193/corman-lisp-sources-are-now-available">"Corman Lisp sources are now available"</a>. January 5, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Corman+Lisp+sources+are+now+available&rft.date=2015-01-05&rft_id=http%3A%2F%2Flispblog.xach.com%2Fpost%2F107215169193%2Fcorman-lisp-sources-are-now-available&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://sbcl.sourceforge.net/history.html">"History and Copyright"</a>. <i>Steel Bank Common Lisp</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Steel+Bank+Common+Lisp&rft.atitle=History+and+Copyright&rft_id=http%3A%2F%2Fsbcl.sourceforge.net%2Fhistory.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.sbcl.org/platform-table.html">"Platform Table"</a>. <i>Steel Bank Common Lisp</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Steel+Bank+Common+Lisp&rft.atitle=Platform+Table&rft_id=http%3A%2F%2Fwww.sbcl.org%2Fplatform-table.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20130520184339/http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=all">"Which programs are fastest? – Computer Language Benchmarks Game"</a>. May 20, 2013. Archived from <a rel="nofollow" class="external text" href="http://benchmarksgame.alioth.debian.org/u32q/benchmark.php?test=all&lang=all">the original</a> on May 20, 2013.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Which+programs+are+fastest%3F+%E2%80%93+Computer+Language+Benchmarks+Game&rft.date=2013-05-20&rft_id=http%3A%2F%2Fbenchmarksgame.alioth.debian.org%2Fu32q%2Fbenchmark.php%3Ftest%3Dall%26lang%3Dall&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/bbn/0.html">"Package: lang/lisp/impl/bbn/"</a>. <i>cs.cmu.edu</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cs.cmu.edu&rft.atitle=Package%3A+lang%2Flisp%2Fimpl%2Fbbn%2F&rft_id=https%3A%2F%2Fwww.cs.cmu.edu%2Fafs%2Fcs%2Fproject%2Fai-repository%2Fai%2Flang%2Flisp%2Fimpl%2Fbbn%2F0.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-29">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.aaai.org/Papers/AAAI/1987/AAAI87-001.pdf">"Recent Developments in Butterfly Lisp, 1987, AAAI Proceedings"</a> <span class="cs1-format">(PDF)</span>. <i>aaai.org</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20151011030824/http://www.aaai.org/Papers/AAAI/1987/AAAI87-001.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on October 11, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=aaai.org&rft.atitle=Recent+Developments+in+Butterfly+Lisp%2C+1987%2C+AAAI+Proceedings&rft_id=http%3A%2F%2Fwww.aaai.org%2FPapers%2FAAAI%2F1987%2FAAAI87-001.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBurkartGoerigkKnutzen1992" class="citation journal cs1">Burkart, O.; Goerigk, W.; Knutzen, H. (June 22, 1992). "CLICC: A New Approach to the Compilation of Common Lisp Programs to C". <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.1282">10.1.1.38.1282</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=CLICC%3A+A+New+Approach+to+the+Compilation+of+Common+Lisp+Programs+to+C&rft.date=1992-06-22&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.38.1282%23id-name%3DCiteSeerX&rft.aulast=Burkart&rft.aufirst=O.&rft.au=Goerigk%2C+W.&rft.au=Knutzen%2C+H.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_journal" title="Template:Cite journal">cite journal</a>}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (<a href="/wiki/Help:CS1_errors#missing_periodical" title="Help:CS1 errors">help</a>)</span></span> </li> <li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://lisp.codemist.co.uk">"codemist.co.uk"</a>. <i>lisp.codemist.co.uk</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=lisp.codemist.co.uk&rft.atitle=codemist.co.uk&rft_id=http%3A%2F%2Flisp.codemist.co.uk&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.axiom-developer.org/axiom-website/bookvol4.pdf">"Axiom, the 30 year horizon, page 43"</a> <span class="cs1-format">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Axiom%2C+the+30+year+horizon%2C+page+43&rft_id=http%3A%2F%2Fwww.axiom-developer.org%2Faxiom-website%2Fbookvol4.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.goldhill-inc.com/developer.html">"Golden Common Lisp Developer"</a>. <i>goldhill-inc.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=goldhill-inc.com&rft.atitle=Golden+Common+Lisp+Developer&rft_id=http%3A%2F%2Fwww.goldhill-inc.com%2Fdeveloper.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text">Golden Common LISP: A Hands-On Approach, David J. Steele, June 2000 by Addison Wesley Publishing Company</span> </li> <li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBrooksal.1995" class="citation journal cs1">Brooks, Rodney A.; al., et (June 22, 1995). "L – A Common Lisp for Embedded Systems". <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.1953">10.1.1.2.1953</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=L+%E2%80%93+A+Common+Lisp+for+Embedded+Systems&rft.date=1995-06-22&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.2.1953%23id-name%3DCiteSeerX&rft.aulast=Brooks&rft.aufirst=Rodney+A.&rft.au=al.%2C+et&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_journal" title="Template:Cite journal">cite journal</a>}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (<a href="/wiki/Help:CS1_errors#missing_periodical" title="Help:CS1 errors">help</a>)</span></span> </li> <li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/ti/explorer/2549830-0001A_PgmgConcepts.pdf">"TI Explorer Programming Concepts"</a> <span class="cs1-format">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=TI+Explorer+Programming+Concepts&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fti%2Fexplorer%2F2549830-0001A_PgmgConcepts.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/ti/explorer/2243201-0001_LispRef.pdf">"TI Explorer Lisp Reference"</a> <span class="cs1-format">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=TI+Explorer+Lisp+Reference&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fti%2Fexplorer%2F2243201-0001_LispRef.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/xerox/interlisp-d/198809_Medley_1.0/400006_Lisp_Release_Notes_Medley_Release_1.0_Sep88.pdf">"Medley Lisp Release Notes"</a> <span class="cs1-format">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Medley+Lisp+Release+Notes&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fxerox%2Finterlisp-d%2F198809_Medley_1.0%2F400006_Lisp_Release_Notes_Medley_Release_1.0_Sep88.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Dictionary.pdf">"Symbolics Common Lisp Dictionary"</a> <span class="cs1-format">(PDF)</span>. <i>trailing-edge.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150422190748/http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Dictionary.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on April 22, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=trailing-edge.com&rft.atitle=Symbolics+Common+Lisp+Dictionary&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fsymbolics%2Fsoftware%2Fopen_genera%2FSymbolics_Common_Lisp_Dictionary.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Language_Concepts.pdf">"Symbolics Common Lisp Language Concepts"</a> <span class="cs1-format">(PDF)</span>. <i>trailing-edge.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150422190751/http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Language_Concepts.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on April 22, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=trailing-edge.com&rft.atitle=Symbolics+Common+Lisp+Language+Concepts&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fsymbolics%2Fsoftware%2Fopen_genera%2FSymbolics_Common_Lisp_Language_Concepts.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Programming_Constructs.pdf">"Symbolics Common Lisp Programming Constructs"</a> <span class="cs1-format">(PDF)</span>. <i>trailing-edge.com</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150422190752/http://bitsavers.trailing-edge.com/pdf/symbolics/software/open_genera/Symbolics_Common_Lisp_Programming_Constructs.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on April 22, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=trailing-edge.com&rft.atitle=Symbolics+Common+Lisp+Programming+Constructs&rft_id=http%3A%2F%2Fbitsavers.trailing-edge.com%2Fpdf%2Fsymbolics%2Fsoftware%2Fopen_genera%2FSymbolics_Common_Lisp_Programming_Constructs.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.cyc.com/documentation/subl-reference/">"SubL Reference – Cycorp"</a>. <i>cyc.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cyc.com&rft.atitle=SubL+Reference+%E2%80%93+Cycorp&rft_id=http%3A%2F%2Fwww.cyc.com%2Fdocumentation%2Fsubl-reference%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-43">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.softwarepreservation.org/projects/LISP/toplevel">"Top Level Inc. – Software Preservation Group"</a>. <i>softwarepreservation.org</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=softwarepreservation.org&rft.atitle=Top+Level+Inc.+%E2%80%93+Software+Preservation+Group&rft_id=http%3A%2F%2Fwww.softwarepreservation.org%2Fprojects%2FLISP%2Ftoplevel&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-44">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?id=141560">WCL: Delivering efficient Common Lisp applications under Unix, Proceedings of the 1992 ACM conference on LISP and functional programming</a>, Pages 260–269</span> </li> <li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160405012115/http://pgc.com/commonlisp/">"commonlisp.net :: WCL"</a>. <i>pgc.com</i>. Archived from <a rel="nofollow" class="external text" href="http://pgc.com/commonlisp/">the original</a> on April 5, 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">March 25,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=pgc.com&rft.atitle=commonlisp.net+%3A%3A+WCL&rft_id=http%3A%2F%2Fpgc.com%2Fcommonlisp%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/xlisp/0.html">"Package: lang/lisp/impl/xlisp/"</a>. <i>cs.cmu.edu</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=cs.cmu.edu&rft.atitle=Package%3A+lang%2Flisp%2Fimpl%2Fxlisp%2F&rft_id=https%3A%2F%2Fwww.cs.cmu.edu%2Fafs%2Fcs%2Fproject%2Fai-repository%2Fai%2Flang%2Flisp%2Fimpl%2Fxlisp%2F0.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-47"><span class="mw-cite-backlink"><b><a href="#cite_ref-47">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.paulgraham.com/avg.html">"Beating the Averages"</a>. <i>paulgraham.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=paulgraham.com&rft.atitle=Beating+the+Averages&rft_id=http%3A%2F%2Fwww.paulgraham.com%2Favg.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-48"><span class="mw-cite-backlink"><b><a href="#cite_ref-48">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.aaai.org/Papers/IAAI/1989/IAAI89-031.pdf">"Authorizer's Assistant"</a> <span class="cs1-format">(PDF)</span>. <i>aaai.org</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110604051110/http://www.aaai.org/Papers/IAAI/1989/IAAI89-031.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on June 4, 2011.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=aaai.org&rft.atitle=Authorizer%27s+Assistant&rft_id=http%3A%2F%2Fwww.aaai.org%2FPapers%2FIAAI%2F1989%2FIAAI89-031.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-49"><span class="mw-cite-backlink"><b><a href="#cite_ref-49">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.prenhall.com/divisions/bp/app/alter/student/useful/ch9amex.html">American Express Authorizer's Assistant</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20091212141726/http://www.prenhall.com/divisions/bp/app/alter/student/useful/ch9amex.html">Archived</a> December 12, 2009, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span> </li> <li id="cite_note-50"><span class="mw-cite-backlink"><b><a href="#cite_ref-50">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.gensym.com/platforms/g2-standard/">Real-time Application Development</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160802230335/http://www.gensym.com/platforms/g2-standard/">Archived</a> August 2, 2016, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>. Gensym. Retrieved August 16, 2016.</span> </li> <li id="cite_note-51"><span class="mw-cite-backlink"><b><a href="#cite_ref-51">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.genworks.com">"Genworks GDL"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Genworks+GDL&rft_id=http%3A%2F%2Fwww.genworks.com&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-52"><span class="mw-cite-backlink"><b><a href="#cite_ref-52">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://opusmodus.com/">"Opusmodus – Home"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Opusmodus+%E2%80%93+Home&rft_id=https%3A%2F%2Fopusmodus.com%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-53"><span class="mw-cite-backlink"><b><a href="#cite_ref-53">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www2.siba.fi/PWGL/">PWGL – Home</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110503155621/http://www2.siba.fi/PWGL/">Archived</a> May 3, 2011, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, Retrieved July 17, 2013.</span> </li> <li id="cite_note-lisp-lang.org-54"><span class="mw-cite-backlink">^ <a href="#cite_ref-lisp-lang.org_54-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lisp-lang.org_54-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://lisp-lang.org/success/aero/">"Aerospace – Common Lisp"</a>. <i>lisp-lang.org</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=lisp-lang.org&rft.atitle=Aerospace+%E2%80%93+Common+Lisp&rft_id=http%3A%2F%2Flisp-lang.org%2Fsuccess%2Faero%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-55"><span class="mw-cite-backlink"><b><a href="#cite_ref-55">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lissys.demon.co.uk/users.html">"Piano Users, retrieved from manufacturer page"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Piano+Users%2C+retrieved+from+manufacturer+page&rft_id=http%3A%2F%2Fwww.lissys.demon.co.uk%2Fusers.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-56"><span class="mw-cite-backlink"><b><a href="#cite_ref-56">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://tech.grammarly.com/blog/running-lisp-in-production">"Grammarly.com, Running Lisp in Production"</a>. June 26, 2015.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Grammarly.com%2C+Running+Lisp+in+Production&rft.date=2015-06-26&rft_id=https%3A%2F%2Ftech.grammarly.com%2Fblog%2Frunning-lisp-in-production&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-57"><span class="mw-cite-backlink"><b><a href="#cite_ref-57">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://ti.arc.nasa.gov/tech/asr/groups/planning-and-scheduling/remote-agent/">"Remote Agent"</a>. <i>ti.arc.nasa.gov</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ti.arc.nasa.gov&rft.atitle=Remote+Agent&rft_id=https%3A%2F%2Fti.arc.nasa.gov%2Ftech%2Fasr%2Fgroups%2Fplanning-and-scheduling%2Fremote-agent%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-58"><span class="mw-cite-backlink"><b><a href="#cite_ref-58">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.flownet.com/gat/jpl-lisp.html">"Lisping at JPL"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Lisping+at+JPL&rft_id=http%3A%2F%2Fwww.flownet.com%2Fgat%2Fjpl-lisp.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-59"><span class="mw-cite-backlink"><b><a href="#cite_ref-59">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://franz.com/success/customer_apps/scheduling/nasa.lhtml">"Franz Inc Customer Applications: NASA"</a>. <i>franz.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=franz.com&rft.atitle=Franz+Inc+Customer+Applications%3A+NASA&rft_id=https%3A%2F%2Ffranz.com%2Fsuccess%2Fcustomer_apps%2Fscheduling%2Fnasa.lhtml&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-60"><span class="mw-cite-backlink"><b><a href="#cite_ref-60">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.stsci.edu/resources/software_hardware/spike/">Spike Planning and Scheduling System</a>. Stsci.edu. Retrieved July 17, 2013.</span> </li> <li id="cite_note-61"><span class="mw-cite-backlink"><b><a href="#cite_ref-61">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://franz.com/success/customer_apps/scheduling/sti.lhtml">"Franz Inc Customer Applications: Space Telescope Institute"</a>. <i>franz.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=franz.com&rft.atitle=Franz+Inc+Customer+Applications%3A+Space+Telescope+Institute&rft_id=https%3A%2F%2Ffranz.com%2Fsuccess%2Fcustomer_apps%2Fscheduling%2Fsti.lhtml&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-62"><span class="mw-cite-backlink"><b><a href="#cite_ref-62">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://blogs.msdn.microsoft.com/patrick_dussud/2006/11/21/how-it-all-startedaka-the-birth-of-the-clr/">"How It All Started…AKA the Birth of the CLR"</a>. <i>microsoft.com</i>. August 28, 2023.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=microsoft.com&rft.atitle=How+It+All+Started%E2%80%A6AKA+the+Birth+of+the+CLR&rft.date=2023-08-28&rft_id=https%3A%2F%2Fblogs.msdn.microsoft.com%2Fpatrick_dussud%2F2006%2F11%2F21%2Fhow-it-all-startedaka-the-birth-of-the-clr%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-63"><span class="mw-cite-backlink"><b><a href="#cite_ref-63">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHuffman" class="citation web cs1">Huffman, Steve. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180517155308/https://redditblog.com/2005/12/05/on-lisp/">"on lisp"</a>. <i>Upvoted</i>. Archived from <a rel="nofollow" class="external text" href="https://redditblog.com/2005/12/05/on-lisp/">the original</a> on May 17, 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">May 11,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Upvoted&rft.atitle=on+lisp&rft.aulast=Huffman&rft.aufirst=Steve&rft_id=https%3A%2F%2Fredditblog.com%2F2005%2F12%2F05%2Fon-lisp%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-64"><span class="mw-cite-backlink"><b><a href="#cite_ref-64">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://pgloader.io/">"Pgloader"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Pgloader&rft_id=https%3A%2F%2Fpgloader.io%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> <li id="cite_note-65"><span class="mw-cite-backlink"><b><a href="#cite_ref-65">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://tapoueh.org/blog/2014/05/why-is-pgloader-so-much-faster/">"Why is pgloader so much faster"</a>. May 14, 2014.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Why+is+pgloader+so+much+faster&rft.date=2014-05-14&rft_id=https%3A%2F%2Ftapoueh.org%2Fblog%2F2014%2F05%2Fwhy-is-pgloader-so-much-faster%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Bibliography">Bibliography</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=38" title="Edit section: Bibliography"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A chronological list of books published (or about to be published) about Common Lisp (the language) or about programming with Common Lisp (especially AI programming). </p> <style data-mw-deduplicate="TemplateStyles:r1239549316">.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}</style><div class="refbegin refbegin-columns references-column-width" style="column-width: 30em"> <ul><li><a href="/wiki/Guy_L._Steele" class="mw-redirect" title="Guy L. Steele">Guy L. Steele</a>: <i>Common Lisp the Language, 1st Edition</i>, Digital Press, 1984, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-932376-41-X" title="Special:BookSources/0-932376-41-X">0-932376-41-X</a></li> <li><a href="/wiki/Rodney_Allen_Brooks" class="mw-redirect" title="Rodney Allen Brooks">Rodney Allen Brooks</a>: <i>Programming in Common Lisp</i>, John Wiley and Sons Inc, 1985, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-471-81888-7" title="Special:BookSources/0-471-81888-7">0-471-81888-7</a></li> <li><a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a>: <i>Performance and Evaluation of Lisp Systems</i>, The MIT Press, 1985, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-57193-5" title="Special:BookSources/0-262-57193-5">0-262-57193-5</a>, <a rel="nofollow" class="external text" href="http://www.dreamsongs.com/Files/Timrep.pdf">PDF</a></li> <li><a href="/wiki/Robert_Wilensky" title="Robert Wilensky">Robert Wilensky</a>: <i>Common LISPcraft</i>, W.W. Norton & Co., 1986, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-393-95544-3" title="Special:BookSources/0-393-95544-3">0-393-95544-3</a></li> <li><a href="/wiki/Eugene_Charniak" title="Eugene Charniak">Eugene Charniak</a>, <a href="/w/index.php?title=Christopher_K._Riesbeck&action=edit&redlink=1" class="new" title="Christopher K. Riesbeck (page does not exist)">Christopher K. Riesbeck</a>, <a href="/w/index.php?title=Drew_V._McDermott&action=edit&redlink=1" class="new" title="Drew V. McDermott (page does not exist)">Drew V. McDermott</a>, <a href="/w/index.php?title=James_R._Meehan&action=edit&redlink=1" class="new" title="James R. Meehan (page does not exist)">James R. Meehan</a>: <i>Artificial Intelligence Programming, 2nd Edition</i>, Lawrence Erlbaum, 1987, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-89859-609-2" title="Special:BookSources/0-89859-609-2">0-89859-609-2</a></li> <li><a href="/w/index.php?title=Wendy_L._Milner&action=edit&redlink=1" class="new" title="Wendy L. Milner (page does not exist)">Wendy L. Milner</a>: <i>Common Lisp: A Tutorial</i>, Prentice Hall, 1987, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-152844-0" title="Special:BookSources/0-13-152844-0">0-13-152844-0</a></li> <li><a href="/w/index.php?title=Deborah_G._Tatar&action=edit&redlink=1" class="new" title="Deborah G. Tatar (page does not exist)">Deborah G. Tatar</a>: <i>A Programmer's Guide to Common Lisp</i>, Longman Higher Education, 1987, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-728940-5" title="Special:BookSources/0-13-728940-5">0-13-728940-5</a></li> <li><a href="/w/index.php?title=Taiichi_Yuasa&action=edit&redlink=1" class="new" title="Taiichi Yuasa (page does not exist)">Taiichi Yuasa</a>, <a href="/w/index.php?title=Masami_Hagiya&action=edit&redlink=1" class="new" title="Masami Hagiya (page does not exist)">Masami Hagiya</a>: <i>Introduction to Common Lisp</i>, Elsevier Ltd, 1987, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-12-774860-1" title="Special:BookSources/0-12-774860-1">0-12-774860-1</a></li> <li><a href="/w/index.php?title=Christian_Queinnec&action=edit&redlink=1" class="new" title="Christian Queinnec (page does not exist)">Christian Queinnec</a>, <a href="/w/index.php?title=Jerome_Chailloux&action=edit&redlink=1" class="new" title="Jerome Chailloux (page does not exist)">Jerome Chailloux</a>: <i>Lisp Evolution and Standardization</i>, Ios Pr Inc., 1988, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/90-5199-008-1" title="Special:BookSources/90-5199-008-1">90-5199-008-1</a></li> <li><a href="/w/index.php?title=Taiichi_Yuasa&action=edit&redlink=1" class="new" title="Taiichi Yuasa (page does not exist)">Taiichi Yuasa</a>, <a href="/w/index.php?title=Richard_Weyhrauch&action=edit&redlink=1" class="new" title="Richard Weyhrauch (page does not exist)">Richard Weyhrauch</a>, <a href="/w/index.php?title=Yasuko_Kitajima&action=edit&redlink=1" class="new" title="Yasuko Kitajima (page does not exist)">Yasuko Kitajima</a>: <i>Common Lisp Drill</i>, Academic Press Inc, 1988, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-12-774861-X" title="Special:BookSources/0-12-774861-X">0-12-774861-X</a></li> <li><a href="/w/index.php?title=Wade_L._Hennessey&action=edit&redlink=1" class="new" title="Wade L. Hennessey (page does not exist)">Wade L. Hennessey</a>: <i>Common Lisp</i>, McGraw-Hill Inc., 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-07-028177-7" title="Special:BookSources/0-07-028177-7">0-07-028177-7</a></li> <li><a href="/w/index.php?title=Tony_Hasemer&action=edit&redlink=1" class="new" title="Tony Hasemer (page does not exist)">Tony Hasemer</a>, <a href="/w/index.php?title=John_Dominque&action=edit&redlink=1" class="new" title="John Dominque (page does not exist)">John Dominque</a>: <i>Common Lisp Programming for Artificial Intelligence</i>, Addison-Wesley Educational Publishers Inc, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-17579-7" title="Special:BookSources/0-201-17579-7">0-201-17579-7</a></li> <li><a href="/w/index.php?title=Sonya_E._Keene&action=edit&redlink=1" class="new" title="Sonya E. Keene (page does not exist)">Sonya E. Keene</a>: <i>Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS</i>, Addison-Wesley, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-17589-4" title="Special:BookSources/0-201-17589-4">0-201-17589-4</a></li> <li><a href="/w/index.php?title=David_Jay_Steele&action=edit&redlink=1" class="new" title="David Jay Steele (page does not exist)">David Jay Steele</a>: <i>Golden Common Lisp: A Hands-On Approach</i>, Addison Wesley, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-41653-0" title="Special:BookSources/0-201-41653-0">0-201-41653-0</a></li> <li><a href="/wiki/David_S._Touretzky" title="David S. Touretzky">David S. Touretzky</a>: <i>Common Lisp: A Gentle Introduction to Symbolic Computation</i>, Benjamin-Cummings, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-8053-0492-4" title="Special:BookSources/0-8053-0492-4">0-8053-0492-4</a>. <a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/~dst/LispBook/">Web/PDF</a> Dover reprint (2013) <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0486498201" title="Special:BookSources/978-0486498201">978-0486498201</a></li> <li><a href="/w/index.php?title=Christopher_K._Riesbeck&action=edit&redlink=1" class="new" title="Christopher K. Riesbeck (page does not exist)">Christopher K. Riesbeck</a>, <a href="/wiki/Roger_C._Schank" class="mw-redirect" title="Roger C. Schank">Roger C. Schank</a>: <i>Inside Case-Based Reasoning</i>, Lawrence Erlbaum, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-89859-767-6" title="Special:BookSources/0-89859-767-6">0-89859-767-6</a></li> <li><a href="/wiki/Patrick_Winston" title="Patrick Winston">Patrick Winston</a>, <a href="/wiki/Berthold_K.P._Horn" title="Berthold K.P. Horn">Berthold Horn</a>: <i>Lisp, 3rd Edition</i>, Addison-Wesley, 1989, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-08319-1" title="Special:BookSources/0-201-08319-1">0-201-08319-1</a>, <a rel="nofollow" class="external text" href="http://people.csail.mit.edu/phw/Books/LISPBACK.HTML">Web</a></li> <li><a href="/w/index.php?title=Gerard_Gazdar&action=edit&redlink=1" class="new" title="Gerard Gazdar (page does not exist)">Gerard Gazdar</a>, <a href="/w/index.php?title=Chris_Mellish&action=edit&redlink=1" class="new" title="Chris Mellish (page does not exist)">Chris Mellish</a>: <i>Natural Language Processing in LISP: An Introduction to Computational Linguistics</i>, Addison-Wesley Longman Publishing Co., 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-17825-7" title="Special:BookSources/0-201-17825-7">0-201-17825-7</a></li> <li><a href="/w/index.php?title=Patrick_R._Harrison&action=edit&redlink=1" class="new" title="Patrick R. Harrison (page does not exist)">Patrick R. Harrison</a>: <i>Common Lisp and Artificial Intelligence</i>, Prentice Hall PTR, 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-155243-0" title="Special:BookSources/0-13-155243-0">0-13-155243-0</a></li> <li><a href="/w/index.php?title=Timothy_Koschmann&action=edit&redlink=1" class="new" title="Timothy Koschmann (page does not exist)">Timothy Koschmann</a>: <i>The Common Lisp Companion</i>, John Wiley & Sons, 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-471-50308-8" title="Special:BookSources/0-471-50308-8">0-471-50308-8</a></li> <li><a href="/w/index.php?title=W._Richard_Stark&action=edit&redlink=1" class="new" title="W. Richard Stark (page does not exist)">W. Richard Stark</a>: <i>LISP, Lore, and Logic</i>, Springer Verlag New York Inc., 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-387-97072-1" title="Special:BookSources/978-0-387-97072-1">978-0-387-97072-1</a>, <a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007/978-1-4613-8931-6">PDF</a></li> <li><a href="/w/index.php?title=Molly_M._Miller&action=edit&redlink=1" class="new" title="Molly M. Miller (page does not exist)">Molly M. Miller</a>, <a href="/w/index.php?title=Eric_Benson&action=edit&redlink=1" class="new" title="Eric Benson (page does not exist)">Eric Benson</a>: <i>Lisp Style & Design</i>, Digital Press, 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-55558-044-0" title="Special:BookSources/1-55558-044-0">1-55558-044-0</a></li> <li><a href="/wiki/Guy_L._Steele" class="mw-redirect" title="Guy L. Steele">Guy L. Steele</a>: <i><a href="/wiki/Common_Lisp_the_Language" title="Common Lisp the Language">Common Lisp the Language</a>, 2nd Edition</i>, Digital Press, 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-55558-041-6" title="Special:BookSources/1-55558-041-6">1-55558-041-6</a>, <a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Web</a></li> <li>Robin Jones, <a href="/w/index.php?title=Clive_Maynard&action=edit&redlink=1" class="new" title="Clive Maynard (page does not exist)">Clive Maynard</a>, Ian Stewart: <i>The Art of Lisp Programming</i>, Springer Verlag New York Inc., 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-3-540-19568-9" title="Special:BookSources/978-3-540-19568-9">978-3-540-19568-9</a>, <a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007/978-1-4471-1719-3">PDF</a></li> <li><a href="/w/index.php?title=Steven_L._Tanimoto&action=edit&redlink=1" class="new" title="Steven L. Tanimoto (page does not exist)">Steven L. Tanimoto</a>: <i>The Elements of Artificial Intelligence Using Common Lisp</i>, Computer Science Press, 1990, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-7167-8230-8" title="Special:BookSources/0-7167-8230-8">0-7167-8230-8</a></li> <li><a href="/wiki/Peter_Lee_(computer_scientist)" title="Peter Lee (computer scientist)">Peter Lee</a>: <i>Topics in Advanced Language Implementation</i>, The MIT Press, 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-12151-4" title="Special:BookSources/0-262-12151-4">0-262-12151-4</a></li> <li><a href="/wiki/John_H._Riley" title="John H. Riley">John H. Riley</a>: <i>A Common Lisp Workbook</i>, Prentice Hall, 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-155797-1" title="Special:BookSources/0-13-155797-1">0-13-155797-1</a></li> <li><a href="/wiki/Peter_Norvig" title="Peter Norvig">Peter Norvig</a>: <i>Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp</i>, Morgan Kaufmann, 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-55860-191-0" title="Special:BookSources/1-55860-191-0">1-55860-191-0</a>, <a rel="nofollow" class="external text" href="http://norvig.com/paip.html">Web</a></li> <li><a href="/wiki/Gregor_Kiczales" title="Gregor Kiczales">Gregor Kiczales</a>, <a href="/w/index.php?title=Jim_des_Rivieres&action=edit&redlink=1" class="new" title="Jim des Rivieres (page does not exist)">Jim des Rivieres</a>, <a href="/wiki/Daniel_G._Bobrow" title="Daniel G. Bobrow">Daniel G. Bobrow</a>: <i>The Art of the Metaobject Protocol</i>, The MIT Press, 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-61074-4" title="Special:BookSources/0-262-61074-4">0-262-61074-4</a></li> <li><a href="/w/index.php?title=Jo_A._Lawless&action=edit&redlink=1" class="new" title="Jo A. Lawless (page does not exist)">Jo A. Lawless</a>, <a href="/w/index.php?title=Molly_M._Miller&action=edit&redlink=1" class="new" title="Molly M. Miller (page does not exist)">Molly M. Miller</a>: <i>Understanding CLOS: The Common Lisp Object System</i>, Digital Press, 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-717232-X" title="Special:BookSources/0-13-717232-X">0-13-717232-X</a></li> <li>Mark Watson: <i>Common Lisp Modules: Artificial Intelligence in the Era of Neural Networks and Chaos Theory</i>, Springer Verlag New York Inc., 1991, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-387-97614-0" title="Special:BookSources/0-387-97614-0">0-387-97614-0</a>, <a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007/978-1-4612-3186-8">PDF</a></li> <li><a href="/w/index.php?title=James_L._Noyes&action=edit&redlink=1" class="new" title="James L. Noyes (page does not exist)">James L. Noyes</a>: <i>Artificial Intelligence with Common Lisp: Fundamentals of Symbolic and Numeric Processing</i>, Jones & Bartlett Pub, 1992, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-669-19473-5" title="Special:BookSources/0-669-19473-5">0-669-19473-5</a></li> <li><a href="/w/index.php?title=Stuart_C._Shapiro&action=edit&redlink=1" class="new" title="Stuart C. Shapiro (page does not exist)">Stuart C. Shapiro</a>: <i>COMMON LISP: An Interactive Approach</i>, Computer Science Press, 1992, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-7167-8218-9" title="Special:BookSources/0-7167-8218-9">0-7167-8218-9</a>, <a rel="nofollow" class="external text" href="https://archive.today/19981205110924/http://www.cse.buffalo.edu/pub/WWW/faculty/shapiro/Commonlisp/">Web/PDF</a></li> <li><a href="/wiki/Kenneth_D._Forbus" class="mw-redirect" title="Kenneth D. Forbus">Kenneth D. Forbus</a>, <a href="/wiki/Johan_de_Kleer" title="Johan de Kleer">Johan de Kleer</a>: <i>Building Problem Solvers</i>, The MIT Press, 1993, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-06157-0" title="Special:BookSources/0-262-06157-0">0-262-06157-0</a></li> <li><a href="/w/index.php?title=Andreas_Paepcke&action=edit&redlink=1" class="new" title="Andreas Paepcke (page does not exist)">Andreas Paepcke</a>: <i>Object-Oriented Programming: The CLOS Perspective</i>, The MIT Press, 1993, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-262-16136-2" title="Special:BookSources/0-262-16136-2">0-262-16136-2</a></li> <li><a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Paul Graham</a>: <i><a href="/wiki/On_Lisp" title="On Lisp">On Lisp</a></i>, Prentice Hall, 1993, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-030552-9" title="Special:BookSources/0-13-030552-9">0-13-030552-9</a>, <a rel="nofollow" class="external text" href="http://www.paulgraham.com/onlisp.html">Web/PDF</a></li> <li><a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Paul Graham</a>: <i>ANSI Common Lisp</i>, Prentice Hall, 1995, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-370875-6" title="Special:BookSources/0-13-370875-6">0-13-370875-6</a></li> <li><a href="/w/index.php?title=Otto_Mayer&action=edit&redlink=1" class="new" title="Otto Mayer (page does not exist)">Otto Mayer</a>: <i>Programmieren in Common Lisp</i>, German, Spektrum Akademischer Verlag, 1995, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/3-86025-710-2" title="Special:BookSources/3-86025-710-2">3-86025-710-2</a></li> <li><a href="/wiki/Stephen_Slade" title="Stephen Slade">Stephen Slade</a>: <i>Object-Oriented Common Lisp</i>, Prentice Hall, 1997, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-605940-6" title="Special:BookSources/0-13-605940-6">0-13-605940-6</a></li> <li><a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a>: <i>Patterns of Software: Tales from the Software Community</i>, Oxford University Press, 1998, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-19-512123-6" title="Special:BookSources/0-19-512123-6">0-19-512123-6</a>, <a rel="nofollow" class="external text" href="http://www.dreamsongs.com/Files/PatternsOfSoftware.pdf">PDF</a></li> <li><a href="/w/index.php?title=Taiichi_Yuasa&action=edit&redlink=1" class="new" title="Taiichi Yuasa (page does not exist)">Taiichi Yuasa</a>, <a href="/w/index.php?title=Hiroshi_G._Okuno&action=edit&redlink=1" class="new" title="Hiroshi G. Okuno (page does not exist)">Hiroshi G. Okuno</a>: <i>Advanced Lisp Technology</i>, CRC, 2002, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-415-29819-9" title="Special:BookSources/0-415-29819-9">0-415-29819-9</a></li> <li><a href="/w/index.php?title=David_B._Lamkins&action=edit&redlink=1" class="new" title="David B. Lamkins (page does not exist)">David B. Lamkins</a>: <i>Successful Lisp: How to Understand and Use Common Lisp</i>, bookfix.com, 2004. <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/3-937526-00-5" title="Special:BookSources/3-937526-00-5">3-937526-00-5</a>, <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100106112300/http://www.psg.com/~dlamkins/sl/contents.html">Web</a></li> <li><a href="/w/index.php?title=Peter_Seibel&action=edit&redlink=1" class="new" title="Peter Seibel (page does not exist)">Peter Seibel</a>: <i><a href="/wiki/Practical_Common_Lisp" title="Practical Common Lisp">Practical Common Lisp</a></i>, Apress, 2005. <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-59059-239-5" title="Special:BookSources/1-59059-239-5">1-59059-239-5</a>, <a rel="nofollow" class="external text" href="http://www.gigamonkeys.com/book/">Web</a></li> <li><a href="/w/index.php?title=Doug_Hoyte&action=edit&redlink=1" class="new" title="Doug Hoyte (page does not exist)">Doug Hoyte</a>: <i>Let Over Lambda</i>, Lulu.com, 2008, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-4357-1275-7" title="Special:BookSources/1-4357-1275-7">1-4357-1275-7</a>, <a rel="nofollow" class="external text" href="http://letoverlambda.com/">Web</a></li> <li><a href="/w/index.php?title=George_F._Luger&action=edit&redlink=1" class="new" title="George F. Luger (page does not exist)">George F. Luger</a>, <a href="/w/index.php?title=William_A._Stubblefield&action=edit&redlink=1" class="new" title="William A. Stubblefield (page does not exist)">William A. Stubblefield</a>: <i>AI Algorithms, Data Structures, and Idioms in Prolog, Lisp and Java</i>, Addison Wesley, 2008, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-13-607047-7" title="Special:BookSources/0-13-607047-7">0-13-607047-7</a>, <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110707202029/http://wps.aw.com/wps/media/objects/5771/5909832/PDF/Luger_0136070477_1.pdf">PDF</a></li> <li><a href="/w/index.php?title=Conrad_Barski&action=edit&redlink=1" class="new" title="Conrad Barski (page does not exist)">Conrad Barski</a>: <i>Land of Lisp: Learn to program in Lisp, one game at a time!</i>, No Starch Press, 2010, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/1-59327-200-6" title="Special:BookSources/1-59327-200-6">1-59327-200-6</a>, <a rel="nofollow" class="external text" href="http://www.lisperati.com/landoflisp/">Web</a></li> <li><a href="/w/index.php?title=Pavel_Penev&action=edit&redlink=1" class="new" title="Pavel Penev (page does not exist)">Pavel Penev</a>: <i>Lisp Web Tales</i>, Leanpub, 2013, <a rel="nofollow" class="external text" href="https://leanpub.com/lispwebtales">Web</a></li> <li><a href="/w/index.php?title=Edmund_Weitz&action=edit&redlink=1" class="new" title="Edmund Weitz (page does not exist)">Edmund Weitz</a>: <i>Common Lisp Recipes</i>, Apress, 2015, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-484211-77-9" title="Special:BookSources/978-1-484211-77-9">978-1-484211-77-9</a>, <a rel="nofollow" class="external text" href="http://www.apress.com/9781484211779">Web</a></li> <li><a href="/w/index.php?title=Patrick_M._Krusenotto&action=edit&redlink=1" class="new" title="Patrick M. Krusenotto (page does not exist)">Patrick M. Krusenotto</a>: <i>Funktionale Programmierung und Metaprogrammierung, Interaktiv in Common Lisp</i>, Springer Fachmedien Wiesbaden 2016, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-3-658-13743-4" title="Special:BookSources/978-3-658-13743-4">978-3-658-13743-4</a>, <a rel="nofollow" class="external text" href="https://link.springer.com/book/10.1007%2F978-3-658-13744-1">Web</a></li></ul> </div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Common_Lisp&action=edit&section=39" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1235681985">.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}</style><style data-mw-deduplicate="TemplateStyles:r1237033735">@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}</style><div class="side-box side-box-right plainlinks sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/80px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></span></span></div> <div class="side-box-text plainlist">Wikibooks has more on the topic of: <i><b><a href="https://en.wikibooks.org/wiki/Special:Search/Common_Lisp" class="extiw" title="wikibooks:Special:Search/Common Lisp">Common Lisp</a></b></i></div></div> </div> <ul><li><a rel="nofollow" class="external text" href="https://www.quicklisp.org/beta/">Quicklisp</a> - A very popular and high quality library manager for Common Lisp</li> <li>The <a rel="nofollow" class="external text" href="https://github.com/CodyReichert/awesome-cl">Awesome CL</a> list, a curated list of Common Lisp frameworks and libraries.</li> <li>The <a rel="nofollow" class="external text" href="https://lispcookbook.github.io/cl-cookbook/">Common Lisp Cookbook</a>, a collaborative project.</li> <li>The <a rel="nofollow" class="external text" href="http://www.cliki.net/">CLiki</a>, a Wiki for <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source</a> Common Lisp systems running on Unix-like systems.</li> <li>One of the main repositories for free Common Lisp for software is <a rel="nofollow" class="external text" href="http://www.common-lisp.net/">Common-Lisp.net</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090927033401/http://common-lisp.net/">Archived</a> September 27, 2009, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.</li> <li><a rel="nofollow" class="external text" href="http://lisp-lang.org/">lisp-lang.org</a> has documentation and a showcase of success stories.</li> <li>An overview of the history of Common Lisp: <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/01_ab.htm">"History"</a>. <i><a href="/wiki/Common_Lisp_HyperSpec" title="Common Lisp HyperSpec">Common Lisp HyperSpec</a></i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Common+Lisp+HyperSpec&rft.atitle=History&rft_id=http%3A%2F%2Fwww.lispworks.com%2Fdocumentation%2FHyperSpec%2FBody%2F01_ab.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACommon+Lisp" class="Z3988"></span></li> <li><a rel="nofollow" class="external text" href="http://clqr.boundp.org">Common Lisp Quick Reference</a> – a compact overview of the Common Lisp standard language.</li> <li><a rel="nofollow" class="external text" href="https://planet.lisp.org">Planet Lisp</a> Articles about Common Lisp.</li> <li><a rel="nofollow" class="external text" href="http://quickdocs.org/">Quickdocs</a> summarizes documentation and dependency information for many Quicklisp projects.</li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Common_Lisp" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Common_Lisp" title="Template:Common Lisp"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Common_Lisp" title="Template talk:Common Lisp"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Common_Lisp" title="Special:EditPage/Template:Common Lisp"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Common_Lisp" style="font-size:114%;margin:0 4em"><a class="mw-selflink selflink">Common Lisp</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Programming_language_implementation" title="Programming language implementation">Implementations</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Allegro CL</a></li> <li><a href="/wiki/Armed_Bear_Common_Lisp" class="mw-redirect" title="Armed Bear Common Lisp">Armed Bear Common Lisp</a> (ABCL)</li> <li><a href="/wiki/CLISP" title="CLISP">CLISP</a></li> <li><a href="/wiki/Clozure_CL" title="Clozure CL">Clozure CL</a></li> <li><a href="/wiki/CMU_Common_Lisp" title="CMU Common Lisp">CMU Common Lisp</a> (CMUCL)</li> <li><a href="/wiki/Corman_Common_Lisp" class="mw-redirect" title="Corman Common Lisp">Corman Common Lisp</a></li> <li><a href="/wiki/Embeddable_Common_Lisp" title="Embeddable Common Lisp">Embeddable Common Lisp</a> (ECL)</li> <li><a href="/wiki/GNU_Common_Lisp" title="GNU Common Lisp">GNU Common Lisp</a> (GCL)</li> <li><a href="/wiki/LispWorks" title="LispWorks">LispWorks</a></li> <li><a href="/wiki/Macintosh_Common_Lisp" title="Macintosh Common Lisp">Macintosh Common Lisp</a></li> <li>ManKai Common Lisp (MKCL)</li> <li><a href="/wiki/Mocl" title="Mocl">Mocl</a></li> <li><a href="/wiki/Poplog" title="Poplog">Poplog</a></li> <li><a href="/wiki/CMU_Common_Lisp" title="CMU Common Lisp">Scieneer CL</a></li> <li><a href="/wiki/Steel_Bank_Common_Lisp" title="Steel Bank Common Lisp">Steel Bank Common Lisp</a> (SBCL)</li> <li><a href="/wiki/Genera_(operating_system)" title="Genera (operating system)">Symbolics Common Lisp</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Software" title="Software">Software</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Library_(computing)" title="Library (computing)">Libraries</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Quicklisp" class="mw-redirect" title="Quicklisp">Quicklisp</a> Library Manager</li> <li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">AllegroCache</a></li> <li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">AllegroServe</a></li> <li><a href="/wiki/Another_System_Definition_Facility" title="Another System Definition Facility">Another System Definition Facility</a> (ASDF)</li> <li><a href="/w/index.php?title=Caveman2&action=edit&redlink=1" class="new" title="Caveman2 (page does not exist)">Caveman2</a></li> <li><a href="/wiki/CLiki" title="CLiki">CLiki</a></li> <li><a href="/wiki/Common_Lisp_Interface_Manager" title="Common Lisp Interface Manager">Common Lisp Interface Manager</a> (CLIM)</li> <li><a href="/wiki/CLSQL" title="CLSQL">CLSQL</a></li> <li><a href="/wiki/CL-HTTP" title="CL-HTTP">CL-HTTP</a></li> <li>CLX</li> <li>Ironclad</li> <li>Weblocks</li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Application_software" title="Application software">Applications</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ACL2" title="ACL2">ACL2</a></li> <li><a href="/wiki/Common_Lisp_Music" title="Common Lisp Music">Common Lisp Music</a></li> <li><a href="/wiki/Common_Music_Notation" title="Common Music Notation">Common Music Notation</a></li> <li><a href="/wiki/ICAD_(software)" title="ICAD (software)">ICAD</a></li> <li><a href="/wiki/FriCAS" title="FriCAS">FriCAS</a></li> <li><a href="/wiki/Mirai_(software)" title="Mirai (software)">Mirai</a></li> <li><a href="/wiki/Maxima_(software)" title="Maxima (software)">Maxima</a></li> <li><a href="/wiki/N-World" title="N-World">N-World</a></li> <li><a href="/wiki/OpenMusic" title="OpenMusic">OpenMusic</a></li> <li><a href="/wiki/StumpWM" class="mw-redirect" title="StumpWM">StumpWM</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Integrated_development_environment" title="Integrated development environment">Development<br />environments</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Allegro CL</a></li> <li><a href="/wiki/Clozure_CL" title="Clozure CL">Clozure CL</a></li> <li><a href="/wiki/Hemlock_(text_editor)" title="Hemlock (text editor)">Hemlock</a></li> <li><a href="/wiki/LispWorks" title="LispWorks">LispWorks</a></li> <li><a href="/wiki/SLIME" title="SLIME">SLIME</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Publications</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><i><a href="/wiki/Common_Lisp_the_Language" title="Common Lisp the Language">Common Lisp the Language</a></i></li> <li><i><a href="/wiki/Paradigms_of_AI_Programming:_Case_Studies_in_Common_Lisp" class="mw-redirect" title="Paradigms of AI Programming: Case Studies in Common Lisp">Paradigms of AI Programming</a></i></li> <li><i><a href="/wiki/The_Art_of_the_Metaobject_Protocol" title="The Art of the Metaobject Protocol">The Art of the Metaobject Protocol</a></i></li> <li><i><a href="/wiki/On_Lisp" title="On Lisp">On Lisp</a></i></li> <li><i><a href="/wiki/Practical_Common_Lisp" title="Practical Common Lisp">Practical Common Lisp</a></i></li> <li><i><a href="/wiki/Object-Oriented_Programming_in_Common_Lisp" title="Object-Oriented Programming in Common Lisp">Object-Oriented Programming in Common Lisp</a></i></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Design committee</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/X3J13" title="X3J13">X3J13</a></li> <li><a href="/wiki/Guy_L._Steele_Jr." title="Guy L. Steele Jr.">Guy L. Steele Jr.</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Scott_Fahlman" title="Scott Fahlman">Scott Fahlman</a></li> <li><a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a></li> <li><a href="/wiki/Philip_Greenspun" title="Philip Greenspun">Philip Greenspun</a></li> <li><a href="/wiki/David_A._Moon" title="David A. Moon">David A. Moon</a></li> <li><a href="/wiki/Kent_Pitman" title="Kent Pitman">Kent Pitman</a></li> <li><a href="/wiki/Robin_Popplestone" title="Robin Popplestone">Robin Popplestone</a></li> <li><a href="/wiki/Guy_L._Steele_Jr." title="Guy L. Steele Jr.">Guy L. Steele Jr.</a></li> <li><a href="/wiki/Daniel_Weinreb" title="Daniel Weinreb">Daniel Weinreb</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a> (CLOS)</li> <li><a href="/wiki/Common_Lisp_HyperSpec" title="Common Lisp HyperSpec">Common Lisp HyperSpec</a></li> <li><a href="/wiki/Greenspun%27s_tenth_rule" title="Greenspun's tenth rule">Greenspun's tenth rule</a></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Lisp_programming_language" style="padding:3px"><table class="nowraplinks hlist mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Lisp_programming_language" title="Template:Lisp programming language"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Lisp_programming_language" title="Template talk:Lisp programming language"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Lisp_programming_language" title="Special:EditPage/Template:Lisp programming language"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Lisp_programming_language" style="font-size:114%;margin:0 4em"><a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp programming language</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Features</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">Automatic storage management</a></li> <li><a href="/wiki/Conditional_(computer_programming)" title="Conditional (computer programming)">Conditionals</a></li> <li><a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">Dynamic typing</a></li> <li><a href="/wiki/Higher-order_function" title="Higher-order function">Higher-order functions</a></li> <li><a href="/wiki/Linked_list" title="Linked list">Linked lists</a></li> <li><a href="/wiki/Macro_(computer_science)" title="Macro (computer science)">Macros</a></li> <li><a href="/wiki/M-expression" title="M-expression">M-expressions</a> (deprecated)</li> <li><a href="/wiki/Read%E2%80%93eval%E2%80%93print_loop" title="Read–eval–print loop">Read–eval–print loop</a></li> <li><a href="/wiki/Recursion_(computer_science)" title="Recursion (computer science)">Recursion</a></li> <li><a href="/wiki/S-expression" title="S-expression">S-expressions</a></li> <li><a href="/wiki/Self-hosting_(compilers)" title="Self-hosting (compilers)">Self-hosting</a> <a href="/wiki/Compiler" title="Compiler">compiler</a></li> <li><a href="/wiki/Tree_data_structure" class="mw-redirect" title="Tree data structure">Tree data structures</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Object-oriented_programming" title="Object-oriented programming">Object</a> systems</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a> (CLOS)</li> <li><a href="/wiki/CommonLoops" title="CommonLoops">CommonLoops</a></li> <li><a href="/wiki/Flavors_(programming_language)" title="Flavors (programming language)">Flavors</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Programming_language_implementation" title="Programming language implementation">Implementations</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Technical_standard" title="Technical standard">Standardized</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">Common<br />Lisp</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Allegro_Common_Lisp" title="Allegro Common Lisp">Allegro Common Lisp</a></li> <li><a href="/wiki/Armed_Bear_Common_Lisp" class="mw-redirect" title="Armed Bear Common Lisp">Armed Bear Common Lisp</a> (ABCL)</li> <li><a href="/wiki/CLISP" title="CLISP">CLISP</a></li> <li><a href="/wiki/Clozure_CL" title="Clozure CL">Clozure CL</a></li> <li><a href="/wiki/CMU_Common_Lisp" title="CMU Common Lisp">CMU Common Lisp</a> (CMUCL)</li> <li><a href="/wiki/Corman_Common_Lisp" class="mw-redirect" title="Corman Common Lisp">Corman Common Lisp</a></li> <li><a href="/wiki/Embeddable_Common_Lisp" title="Embeddable Common Lisp">Embeddable Common Lisp</a> (ECL)</li> <li><a href="/wiki/GNU_Common_Lisp" title="GNU Common Lisp">GNU Common Lisp</a> (GCL)</li> <li><a href="/wiki/LispWorks" title="LispWorks">LispWorks</a></li> <li><a href="/wiki/Macintosh_Common_Lisp" title="Macintosh Common Lisp">Macintosh Common Lisp</a></li> <li><a href="/wiki/Mocl" title="Mocl">Mocl</a></li> <li>Movitz</li> <li><a href="/wiki/Poplog" title="Poplog">Poplog</a></li> <li><a href="/wiki/Steel_Bank_Common_Lisp" title="Steel Bank Common Lisp">Steel Bank Common Lisp</a> (SBCL)</li> <li><a href="/wiki/Genera_(operating_system)" title="Genera (operating system)">Symbolics Common Lisp</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><i><a href="/wiki/History_of_the_Scheme_programming_language" title="History of the Scheme programming language">History</a></i></li> <li><a href="/wiki/Bigloo" title="Bigloo">Bigloo</a></li> <li><a href="/wiki/Chez_Scheme" title="Chez Scheme">Chez Scheme</a></li> <li><a href="/wiki/Chicken_(Scheme_implementation)" title="Chicken (Scheme implementation)">Chicken</a></li> <li><a href="/wiki/Gambit_(scheme_implementation)" class="mw-redirect" title="Gambit (scheme implementation)">Gambit</a></li> <li><a href="/wiki/Game_Oriented_Assembly_Lisp" title="Game Oriented Assembly Lisp">Game Oriented Assembly Lisp</a> (GOAL)</li> <li><a href="/wiki/GNU_Guile" title="GNU Guile">GNU Guile</a></li> <li><a href="/wiki/Ikarus_(Scheme_implementation)" title="Ikarus (Scheme implementation)">Ikarus</a></li> <li><a href="/wiki/JScheme" title="JScheme">JScheme</a></li> <li><a href="/wiki/Kawa_(Scheme_implementation)" title="Kawa (Scheme implementation)">Kawa</a></li> <li><a href="/wiki/MIT/GNU_Scheme" title="MIT/GNU Scheme">MIT/GNU Scheme</a></li> <li><a href="/wiki/MultiLisp" title="MultiLisp">MultiLisp</a></li> <li><a href="/wiki/Pico_(programming_language)" title="Pico (programming language)">Pico</a></li> <li>Pocket Scheme</li> <li><a href="/wiki/Racket_(programming_language)" title="Racket (programming language)">Racket</a> (<a href="/wiki/Racket_features" title="Racket features">features</a>)</li> <li><a href="/wiki/Scheme_48" title="Scheme 48">Scheme 48</a></li> <li><a href="/wiki/SCM_(Scheme_implementation)" title="SCM (Scheme implementation)">SCM</a></li> <li><a href="/wiki/SIOD" title="SIOD">SIOD</a></li> <li><a href="/wiki/T_(programming_language)" title="T (programming language)">T</a></li> <li><a href="/wiki/TinyScheme" title="TinyScheme">TinyScheme</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/ISLISP" title="ISLISP">ISLISP</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/OpenLisp" title="OpenLisp">OpenLisp</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Unstandardized</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Logo_(programming_language)" title="Logo (programming language)">Logo</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/MSWLogo" title="MSWLogo">MSWLogo</a></li> <li><a href="/wiki/NetLogo" title="NetLogo">NetLogo</a></li> <li><a href="/wiki/StarLogo" title="StarLogo">StarLogo</a></li> <li><a href="/wiki/UCBLogo" title="UCBLogo">UCBLogo</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/POP-11" title="POP-11">POP</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/COWSEL" title="COWSEL">COWSEL</a> (POP-1)</li> <li><a href="/wiki/POP-2" title="POP-2">POP-2</a></li> <li><a href="/wiki/POP-11" title="POP-11">POP-11</a></li></ul> </div></td></tr></tbody></table><div> <ul><li><a href="/wiki/Arc_(programming_language)" title="Arc (programming language)">Arc</a></li> <li><a href="/wiki/AutoLISP" title="AutoLISP">AutoLISP</a></li> <li><a href="/wiki/BBN_LISP" title="BBN LISP">BBN LISP</a></li> <li><a href="/wiki/Clojure" title="Clojure">Clojure</a></li> <li><a href="/wiki/Dylan_(programming_language)" title="Dylan (programming language)">Dylan</a> (<a href="/wiki/Apple_Dylan" title="Apple Dylan">Apple</a>, <i><a href="/wiki/History_of_the_Dylan_programming_language" title="History of the Dylan programming language">history</a></i>)</li> <li><a href="/wiki/Emacs_Lisp" title="Emacs Lisp">Emacs Lisp</a></li> <li><a href="/wiki/EuLisp" title="EuLisp">EuLisp</a></li> <li><a href="/wiki/Franz_Lisp" title="Franz Lisp">Franz Lisp</a>, <a href="/wiki/PC-LISP" title="PC-LISP">PC-LISP</a></li> <li><a href="/wiki/Hy_(programming_language)" title="Hy (programming language)">Hy</a></li> <li><a href="/wiki/Interlisp" title="Interlisp">Interlisp</a></li> <li><a href="/wiki/Knowledge_Engineering_Environment" title="Knowledge Engineering Environment">Knowledge Engineering Environment</a></li> <li><a href="/wiki/*Lisp" title="*Lisp">*Lisp</a></li> <li><a href="/wiki/LeLisp" class="mw-redirect" title="LeLisp">LeLisp</a></li> <li><a href="/wiki/LFE_(programming_language)" title="LFE (programming language)">LFE</a></li> <li><a href="/wiki/Lisp_Machine_Lisp" title="Lisp Machine Lisp">Lisp Machine Lisp</a></li> <li><a href="/wiki/Maclisp" title="Maclisp">Maclisp</a></li> <li><a href="/wiki/MDL_(programming_language)" title="MDL (programming language)">MDL</a></li> <li><a href="/wiki/MLisp" title="MLisp">MLisp</a></li> <li><a href="/wiki/NewLISP" title="NewLISP">newLISP</a></li> <li><a href="/wiki/NIL_(programming_language)" title="NIL (programming language)">NIL</a></li> <li><a href="/wiki/PC-LISP" title="PC-LISP">PC-LISP</a></li> <li><a href="/wiki/Picolisp" class="mw-redirect" title="Picolisp">Picolisp</a></li> <li><a href="/wiki/Portable_Standard_Lisp" title="Portable Standard Lisp">Portable Standard Lisp</a></li> <li><a href="/wiki/RPL_(programming_language)" title="RPL (programming language)">RPL</a></li> <li><a href="/wiki/S-1_Lisp" title="S-1 Lisp">S-1 Lisp</a></li> <li><a href="/wiki/Cadence_SKILL" title="Cadence SKILL">SKILL</a></li> <li><a href="/wiki/Spice_Lisp" title="Spice Lisp">Spice Lisp</a></li> <li><a href="/wiki/Zetalisp" class="mw-redirect" title="Zetalisp">Zetalisp</a></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Operating_system" title="Operating system">Operating system</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <li><b><a href="/wiki/Lisp_(programming_language)#Operating_systems" title="Lisp (programming language)">List</a></b></li> <li><a href="/wiki/Common_Lisp_Interface_Manager" title="Common Lisp Interface Manager">Common Lisp Interface Manager</a>, <a href="/wiki/McCLIM" title="McCLIM">McCLIM</a></li> <li><a href="/wiki/Genera_(operating_system)" title="Genera (operating system)">Genera</a></li> <li><a href="/wiki/Scsh" title="Scsh">Scsh</a></li> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Computer_hardware" title="Computer hardware">Hardware</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Lisp_machine" title="Lisp machine">Lisp machine</a> <ul><li><a href="/wiki/TI_Explorer" class="mw-redirect" title="TI Explorer">TI Explorer</a></li></ul></li> <li><a href="/wiki/Space-cadet_keyboard" title="Space-cadet keyboard">Space-cadet keyboard</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Community_of_practice" title="Community of practice">Community<br />of practice</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Technical standards</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Scheme_Requests_for_Implementation" title="Scheme Requests for Implementation">Scheme Requests for Implementation</a></li> <li><a href="/wiki/Common_Lisp_HyperSpec" title="Common Lisp HyperSpec">Common Lisp HyperSpec</a></li> <li><a href="/wiki/X3J13" title="X3J13">X3J13</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Education</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Books</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Common_Lisp_the_Language" title="Common Lisp the Language">Common Lisp the Language</a></li> <li><a href="/wiki/How_to_Design_Programs" title="How to Design Programs">How to Design Programs</a> (HTDP)</li> <li><a href="/wiki/On_Lisp" title="On Lisp">On Lisp</a></li> <li><a href="/wiki/Practical_Common_Lisp" title="Practical Common Lisp">Practical Common Lisp</a></li> <li><a href="/wiki/Structure_and_Interpretation_of_Computer_Programs" title="Structure and Interpretation of Computer Programs">Structure and Interpretation of Computer Programs</a> (SICP)</li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Curriculum</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ProgramByDesign" title="ProgramByDesign">ProgramByDesign</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Business</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Apple_Inc." title="Apple Inc.">Apple Computer</a></li> <li><a href="/wiki/BBN_Technologies" class="mw-redirect" title="BBN Technologies">Bolt, Beranek and Newman</a></li> <li><a href="/wiki/Harlequin_(software_company)" title="Harlequin (software company)">Harlequin</a></li> <li><a href="/wiki/Lucid_Inc." title="Lucid Inc.">Lucid Inc.</a></li> <li><a href="/wiki/Symbolics" title="Symbolics">Symbolics</a></li> <li><a href="/wiki/Xanalys" title="Xanalys">Xanalys</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Education</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">Massachusetts Institute of Technology</a> (MIT)</li> <li><a href="/wiki/MIT_Computer_Science_and_Artificial_Intelligence_Laboratory" title="MIT Computer Science and Artificial Intelligence Laboratory">MIT Computer Science and Artificial Intelligence Laboratory</a> (CSAIL)</li> <li><a href="/wiki/Stanford_University_centers_and_institutes#Stanford_Artificial_Intelligence_Laboratory" title="Stanford University centers and institutes">Stanford Artificial Intelligence Laboratory</a></li> <li><a href="/wiki/University_of_California,_Berkeley" title="University of California, Berkeley">University of California, Berkeley</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Edmund_Berkeley" title="Edmund Berkeley">Edmund Berkeley</a></li> <li><a href="/wiki/Daniel_G._Bobrow" title="Daniel G. Bobrow">Daniel G. Bobrow</a></li> <li><a href="/wiki/William_Clinger_(computer_scientist)" title="William Clinger (computer scientist)">William Clinger</a></li> <li><a href="/wiki/R._Kent_Dybvig" title="R. Kent Dybvig">R. Kent Dybvig</a></li> <li><a href="/wiki/Matthias_Felleisen" title="Matthias Felleisen">Matthias Felleisen</a></li> <li><a href="/wiki/Robert_Bruce_Findler" title="Robert Bruce Findler">Robert Bruce Findler</a></li> <li><a href="/wiki/Matthew_Flatt" title="Matthew Flatt">Matthew Flatt</a></li> <li><a href="/wiki/Phyllis_Fox" title="Phyllis Fox">Phyllis Fox</a></li> <li><a href="/wiki/Paul_Graham_(programmer)" title="Paul Graham (programmer)">Paul Graham</a></li> <li><a href="/wiki/Richard_Greenblatt_(programmer)" title="Richard Greenblatt (programmer)">Richard Greenblatt</a></li> <li>Timothy P. Hart</li> <li><a href="/wiki/Louis_Hodes" title="Louis Hodes">Louis Hodes</a></li> <li>Mike Levin</li> <li><a href="/wiki/David_Luckham" title="David Luckham">David Luckham</a></li> <li><a href="/wiki/John_McCarthy_(computer_scientist)" title="John McCarthy (computer scientist)">John McCarthy</a></li> <li><a href="/wiki/Robert_Tappan_Morris" title="Robert Tappan Morris">Robert Tappan Morris</a></li> <li><a href="/wiki/Joel_Moses" title="Joel Moses">Joel Moses</a></li> <li><a href="/wiki/David_Park_(computer_scientist)" title="David Park (computer scientist)">David Park</a></li> <li><a href="/wiki/Steve_Russell_(computer_scientist)" title="Steve Russell (computer scientist)">Steve Russell</a></li> <li><a href="/wiki/Richard_Stallman" title="Richard Stallman">Richard Stallman</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">Common Lisp</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Scott_Fahlman" title="Scott Fahlman">Scott Fahlman</a></li> <li><a href="/wiki/Richard_P._Gabriel" title="Richard P. Gabriel">Richard P. Gabriel</a></li> <li><a href="/wiki/Philip_Greenspun" title="Philip Greenspun">Philip Greenspun</a> (<a href="/wiki/Greenspun%27s_tenth_rule" title="Greenspun's tenth rule">10th rule</a>)</li> <li><a href="/wiki/David_A._Moon" title="David A. Moon">David A. Moon</a></li> <li><a href="/wiki/Kent_Pitman" title="Kent Pitman">Kent Pitman</a></li> <li><a href="/wiki/Guy_L._Steele_Jr." title="Guy L. Steele Jr.">Guy L. Steele Jr.</a></li> <li><a href="/wiki/Daniel_Weinreb" title="Daniel Weinreb">Daniel Weinreb</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Matthias_Felleisen" title="Matthias Felleisen">Matthias Felleisen</a></li> <li><a href="/wiki/Shriram_Krishnamurthi" title="Shriram Krishnamurthi">Shriram Krishnamurthi</a></li> <li><a href="/wiki/Guy_L._Steele_Jr." title="Guy L. Steele Jr.">Guy L. Steele Jr.</a></li> <li><a href="/wiki/Gerald_Jay_Sussman" title="Gerald Jay Sussman">Gerald Jay Sussman</a></li> <li><a href="/wiki/Julie_Sussman" class="mw-redirect" title="Julie Sussman">Julie Sussman</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Logo_(programming_language)" title="Logo (programming language)">Logo</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Hal_Abelson" title="Hal Abelson">Hal Abelson</a></li> <li><a href="/wiki/Denison_Bollay" title="Denison Bollay">Denison Bollay</a></li> <li><a href="/wiki/Wally_Feurzeig" title="Wally Feurzeig">Wally Feurzeig</a></li> <li><a href="/wiki/Brian_Harvey_(lecturer)" title="Brian Harvey (lecturer)">Brian Harvey</a></li> <li><a href="/wiki/Seymour_Papert" title="Seymour Papert">Seymour Papert</a></li> <li><a href="/wiki/Mitchel_Resnick" title="Mitchel Resnick">Mitchel Resnick</a></li> <li><a href="/wiki/Cynthia_Solomon" title="Cynthia Solomon">Cynthia Solomon</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/POP-11" title="POP-11">POP</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Rod_Burstall" title="Rod Burstall">Rod Burstall</a></li> <li><a href="/wiki/Robin_Popplestone" title="Robin Popplestone">Robin Popplestone</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div><span class="noviewer" typeof="mw:File"><span title="List-Class article"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/d/db/Symbol_list_class.svg/16px-Symbol_list_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/d/db/Symbol_list_class.svg/23px-Symbol_list_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/d/db/Symbol_list_class.svg/31px-Symbol_list_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/List_of_Lisp-family_programming_languages" title="List of Lisp-family programming languages">List</a></b> <span class="noviewer" typeof="mw:File"><a href="/wiki/File:Symbol_book_class2.svg" class="mw-file-description" title="Wikipedia book"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/16px-Symbol_book_class2.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/23px-Symbol_book_class2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_book_class2.svg/31px-Symbol_book_class2.svg.png 2x" data-file-width="180" data-file-height="185" /></a></span> <b><a href="https://en.wikibooks.org/wiki/Subject:Lisp_programming_language" class="extiw" title="wikibooks:Subject:Lisp programming language">Books</a></b> <span class="noviewer" typeof="mw:File"><span title="Commons page"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png" decoding="async" width="12" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/24px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span></span> <b><a href="https://commons.wikimedia.org/wiki/Category:Lisp_(programming_language)" class="extiw" title="commons:Category:Lisp (programming language)">Commons</a></b> <span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/Category:Lisp_(programming_language)" title="Category:Lisp (programming language)">Category</a></b> <span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/Category:Lisp_programming_language_family" title="Category:Lisp programming language family">Category</a></b></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox authority-control" aria-label="Navbox" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a>: National <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q849146#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh86003862">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="http://olduli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=987007553769005171">Israel</a></span></li></ul></div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐pk86d Cached time: 20241122140922 Cache expiry: 726646 Reduced expiry: true Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 1.200 seconds Real time usage: 1.697 seconds Preprocessor visited node count: 14856/1000000 Post‐expand include size: 226775/2097152 bytes Template argument size: 10683/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 48/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 373914/5000000 bytes Lua time usage: 0.609/10.000 seconds Lua memory usage: 7412440/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 1442.445 1 -total 25.27% 364.511 1 Template:Reflist 18.04% 260.210 53 Template:Cite_web 15.07% 217.306 49 Template:ISBN 9.94% 143.361 11 Template:Navbox 7.57% 109.204 49 Template:Catalog_lookup_link 6.65% 95.936 1 Template:Short_description 6.53% 94.145 1 Template:Common_Lisp 4.56% 65.783 2 Template:Pagetype 4.22% 60.833 1 Template:Infobox_programming_language --> <!-- Saved in parser cache with key enwiki:pcache:idhash:6068-0!canonical and timestamp 20241122140922 and revision id 1236270901. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Common_Lisp&oldid=1236270901">https://en.wikipedia.org/w/index.php?title=Common_Lisp&oldid=1236270901</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Common_Lisp" title="Category:Common Lisp">Common Lisp</a></li><li><a href="/wiki/Category:Class-based_programming_languages" title="Category:Class-based programming languages">Class-based programming languages</a></li><li><a href="/wiki/Category:Cross-platform_free_software" title="Category:Cross-platform free software">Cross-platform free software</a></li><li><a href="/wiki/Category:Cross-platform_software" title="Category:Cross-platform software">Cross-platform software</a></li><li><a href="/wiki/Category:Dynamic_programming_languages" title="Category:Dynamic programming languages">Dynamic programming languages</a></li><li><a href="/wiki/Category:Dynamically_typed_programming_languages" title="Category:Dynamically typed programming languages">Dynamically typed programming languages</a></li><li><a href="/wiki/Category:Extensible_syntax_programming_languages" title="Category:Extensible syntax programming languages">Extensible syntax programming languages</a></li><li><a href="/wiki/Category:Functional_languages" title="Category:Functional languages">Functional languages</a></li><li><a href="/wiki/Category:Lisp_(programming_language)" title="Category:Lisp (programming language)">Lisp (programming language)</a></li><li><a href="/wiki/Category:Lisp_programming_language_family" title="Category:Lisp programming language family">Lisp programming language family</a></li><li><a href="/wiki/Category:Multi-paradigm_programming_languages" title="Category:Multi-paradigm programming languages">Multi-paradigm programming languages</a></li><li><a href="/wiki/Category:Object-oriented_programming_languages" title="Category:Object-oriented programming languages">Object-oriented programming languages</a></li><li><a href="/wiki/Category:Procedural_programming_languages" title="Category:Procedural programming languages">Procedural programming languages</a></li><li><a href="/wiki/Category:Programming_languages_created_in_1984" title="Category:Programming languages created in 1984">Programming languages created in 1984</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</a></li><li><a href="/wiki/Category:CS1_errors:_missing_periodical" title="Category:CS1 errors: missing periodical">CS1 errors: missing periodical</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:Use_mdy_dates_from_April_2020" title="Category:Use mdy dates from April 2020">Use mdy dates from April 2020</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_May_2011" title="Category:Articles with unsourced statements from May 2011">Articles with unsourced statements from May 2011</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_July_2018" title="Category:Articles needing additional references from July 2018">Articles needing additional references from July 2018</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Articles_with_example_Lisp_(programming_language)_code" title="Category:Articles with example Lisp (programming language) code">Articles with example Lisp (programming language) code</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 23 July 2024, at 20:09<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Common_Lisp&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-2z5zb","wgBackendResponseTime":162,"wgPageParseReport":{"limitreport":{"cputime":"1.200","walltime":"1.697","ppvisitednodes":{"value":14856,"limit":1000000},"postexpandincludesize":{"value":226775,"limit":2097152},"templateargumentsize":{"value":10683,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":48,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":373914,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 1442.445 1 -total"," 25.27% 364.511 1 Template:Reflist"," 18.04% 260.210 53 Template:Cite_web"," 15.07% 217.306 49 Template:ISBN"," 9.94% 143.361 11 Template:Navbox"," 7.57% 109.204 49 Template:Catalog_lookup_link"," 6.65% 95.936 1 Template:Short_description"," 6.53% 94.145 1 Template:Common_Lisp"," 4.56% 65.783 2 Template:Pagetype"," 4.22% 60.833 1 Template:Infobox_programming_language"]},"scribunto":{"limitreport-timeusage":{"value":"0.609","limit":"10.000"},"limitreport-memusage":{"value":7412440,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-pk86d","timestamp":"20241122140922","ttl":726646,"transientcontent":true}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Common Lisp","url":"https:\/\/en.wikipedia.org\/wiki\/Common_Lisp","sameAs":"http:\/\/www.wikidata.org\/entity\/Q849146","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q849146","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2001-10-26T18:06:01Z","dateModified":"2024-07-23T20:09:52Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/4\/48\/Lisp_logo.svg","headline":"ANSI-standardized dialect of Lisp"}</script> </body> </html>