CINXE.COM
LFE (programming language) - 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>LFE (programming language) - 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":"398c138b-83a4-421a-b7ed-ecffb85be51b","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"LFE_(programming_language)","wgTitle":"LFE (programming language)","wgCurRevisionId":1165968745,"wgRevisionId":1165968745,"wgArticleId":41671035,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles lacking reliable references from August 2020","All articles lacking reliable references","Articles with example Lisp (programming language) code","Official website different in Wikidata and Wikipedia","Programming languages","Pattern matching programming languages","Lisp programming language family"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"LFE_(programming_language)", "wgRelevantArticleId":41671035,"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":10000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q17097207","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","mediawiki.page.media","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.quicksurveys.init","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/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/1200px-LFE_%28Lisp_Flavored_Erlang%29_Logo.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/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/800px-LFE_%28Lisp_Flavored_Erlang%29_Logo.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/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/640px-LFE_%28Lisp_Flavored_Erlang%29_Logo.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="LFE (programming language) - 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/LFE_(programming_language)"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=LFE_(programming_language)&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/LFE_(programming_language)"> <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-LFE_programming_language rootpage-LFE_programming_language 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=LFE+%28programming+language%29" 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=LFE+%28programming+language%29" 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=LFE+%28programming+language%29" 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=LFE+%28programming+language%29" 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 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <button aria-controls="toc-History-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 History subsection</span> </button> <ul id="toc-History-sublist" class="vector-toc-list"> <li id="toc-Initial_release" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Initial_release"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Initial release</span> </div> </a> <ul id="toc-Initial_release-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Motives" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Motives"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Motives</span> </div> </a> <ul id="toc-Motives-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Features" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Features"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Features</span> </div> </a> <ul id="toc-Features-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Syntax_and_semantics" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Syntax_and_semantics"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Syntax and semantics</span> </div> </a> <button aria-controls="toc-Syntax_and_semantics-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 Syntax and semantics subsection</span> </button> <ul id="toc-Syntax_and_semantics-sublist" class="vector-toc-list"> <li id="toc-Symbolic_expressions_(S-expressions)" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Symbolic_expressions_(S-expressions)"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Symbolic expressions (S-expressions)</span> </div> </a> <ul id="toc-Symbolic_expressions_(S-expressions)-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Lists" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Lists"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Lists</span> </div> </a> <ul id="toc-Lists-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Operators" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Operators"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Operators</span> </div> </a> <ul id="toc-Operators-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Lambda_expressions_and_function_definition" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Lambda_expressions_and_function_definition"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span> <span>Lambda expressions and function definition</span> </div> </a> <ul id="toc-Lambda_expressions_and_function_definition-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Erlang_idioms_in_LFE" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Erlang_idioms_in_LFE"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Erlang idioms in LFE</span> </div> </a> <button aria-controls="toc-Erlang_idioms_in_LFE-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 Erlang idioms in LFE subsection</span> </button> <ul id="toc-Erlang_idioms_in_LFE-sublist" class="vector-toc-list"> <li id="toc-Pattern_matching" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Pattern_matching"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Pattern matching</span> </div> </a> <ul id="toc-Pattern_matching-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-List_comprehensions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#List_comprehensions"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>List comprehensions</span> </div> </a> <ul id="toc-List_comprehensions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Guards" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Guards"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Guards</span> </div> </a> <ul id="toc-Guards-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-cons'ing_in_function_heads" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#cons'ing_in_function_heads"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>cons'ing in function heads</span> </div> </a> <ul id="toc-cons'ing_in_function_heads-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Matching_records_in_function_heads" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Matching_records_in_function_heads"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Matching records in function heads</span> </div> </a> <ul id="toc-Matching_records_in_function_heads-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Receiving_messages" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Receiving_messages"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Receiving messages</span> </div> </a> <ul id="toc-Receiving_messages-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Examples</span> </div> </a> <button aria-controls="toc-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 Examples subsection</span> </button> <ul id="toc-Examples-sublist" class="vector-toc-list"> <li id="toc-Erlang_interoperability" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Erlang_interoperability"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Erlang interoperability</span> </div> </a> <ul id="toc-Erlang_interoperability-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Functional_paradigm" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Functional_paradigm"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Functional paradigm</span> </div> </a> <ul id="toc-Functional_paradigm-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Concurrency" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Concurrency"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>Concurrency</span> </div> </a> <ul id="toc-Concurrency-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</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">LFE (programming language)</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 1 language" > <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-1" 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">1 language</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/LFE" title="LFE – Hebrew" lang="he" hreflang="he" data-title="LFE" data-language-autonym="עברית" data-language-local-name="Hebrew" 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/Q17097207#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/LFE_(programming_language)" 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:LFE_(programming_language)" 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/LFE_(programming_language)"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=LFE_(programming_language)&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=LFE_(programming_language)&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/LFE_(programming_language)"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=LFE_(programming_language)&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=LFE_(programming_language)&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/LFE_(programming_language)" 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/LFE_(programming_language)" 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=LFE_(programming_language)&oldid=1165968745" 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=LFE_(programming_language)&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=LFE_%28programming_language%29&id=1165968745&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%2FLFE_%28programming_language%29"><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%2FLFE_%28programming_language%29"><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=LFE_%28programming_language%29&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=LFE_(programming_language)&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 id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q17097207" 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"><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-Primary_sources plainlinks metadata ambox ambox-content ambox-Primary_sources" 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 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 article <b>relies excessively on <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">references</a> to <a href="/wiki/Wikipedia:No_original_research#Primary,_secondary_and_tertiary_sources" title="Wikipedia:No original research">primary sources</a></b>.<span class="hide-when-compact"> Please improve this article by adding <a href="/wiki/Wikipedia:No_original_research#Primary,_secondary_and_tertiary_sources" title="Wikipedia:No original research">secondary or tertiary sources</a>. <br /><small><span class="plainlinks"><i>Find sources:</i> <a rel="nofollow" class="external text" href="https://www.google.com/search?as_eq=wikipedia&q=%22LFE%22+programming+language">"LFE" programming language</a> – <a rel="nofollow" class="external text" href="https://www.google.com/search?tbm=nws&q=%22LFE%22+programming+language+-wikipedia&tbs=ar:1">news</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?&q=%22LFE%22+programming+language&tbs=bkt:s&tbm=bks">newspapers</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.google.com/search?tbs=bks:1&q=%22LFE%22+programming+language+-wikipedia">books</a> <b>·</b> <a rel="nofollow" class="external text" href="https://scholar.google.com/scholar?q=%22LFE%22+programming+language">scholar</a> <b>·</b> <a rel="nofollow" class="external text" href="https://www.jstor.org/action/doBasicSearch?Query=%22LFE%22+programming+language&acc=on&wc=on">JSTOR</a></span></small></span> <span class="date-container"><i>(<span class="date">August 2020</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> <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">LFE</caption><tbody><tr><td colspan="2" class="infobox-image"><span typeof="mw:File"><a href="/wiki/File:LFE_(Lisp_Flavored_Erlang)_Logo.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/121px-LFE_%28Lisp_Flavored_Erlang%29_Logo.png" decoding="async" width="121" height="121" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/182px-LFE_%28Lisp_Flavored_Erlang%29_Logo.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/63/LFE_%28Lisp_Flavored_Erlang%29_Logo.png/242px-LFE_%28Lisp_Flavored_Erlang%29_Logo.png 2x" data-file-width="4074" data-file-height="4074" /></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/Concurrent_programming" class="mw-redirect" title="Concurrent programming">concurrent</a>, <a href="/wiki/Functional_programming" title="Functional programming">functional</a></td></tr><tr><th scope="row" class="infobox-label">Family</th><td class="infobox-data"><a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>, <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">Robert Virding</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">Robert Virding</td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">2008<span class="noprint">; 16 years ago</span><span style="display:none"> (<span class="bday dtstart published updated">2008</span>)</span></td></tr><tr><td colspan="2" class="infobox-full-data"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1257001546"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">2.1.1 / 6 January 2023<span class="noprint">; 22 months ago</span><span style="display:none"> (<span class="bday dtstart published updated">2023-01-06</span>)</span></div></td></tr><tr style="display:none"><td colspan="2"> </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/Type_system" title="Type system">dynamic</a>, <a href="/wiki/Strong_typing" class="mw-redirect" title="Strong typing">strong</a></td></tr><tr><th scope="row" class="infobox-label">Implementation language</th><td class="infobox-data"><a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a></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/Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="/wiki/Apache_License" title="Apache License">Apache</a> 2.0</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">.lfe .hrl</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://lfe.io">lfe<wbr />.io</a></span></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/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>, <a href="/wiki/Common_Lisp" title="Common Lisp">Common 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/Elixir_(programming_language)" title="Elixir (programming language)">Elixir</a>, <a href="/wiki/Clojure_(programming_language)" class="mw-redirect" title="Clojure (programming language)">Clojure</a>, <a href="/wiki/Hy_(programming_language)" title="Hy (programming language)">Hy</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">Joxa, Concurrent Schemer</td></tr></tbody></table> <p><b>Lisp Flavored Erlang</b> (<b>LFE</b>) is a <a href="/wiki/Functional_language" class="mw-redirect" title="Functional language">functional</a>, <a href="/wiki/Concurrent_computing" title="Concurrent computing">concurrent</a>, <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage collected</a>, general-purpose <a href="/wiki/Programming_language" title="Programming language">programming language</a> and <a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a> <a href="/wiki/Dialect_(computing)" class="mw-redirect" title="Dialect (computing)">dialect</a> built on Core <a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a> and the Erlang virtual machine (<a href="/wiki/BEAM_(Erlang_virtual_machine)" title="BEAM (Erlang virtual machine)">BEAM</a>). LFE builds on Erlang to provide a Lisp syntax for writing distributed, <a href="/wiki/Fault_tolerance" title="Fault tolerance">fault-tolerant</a>, soft <a href="/wiki/Real-time_computing" title="Real-time computing">real-time</a>, non-stop applications. LFE also extends Erlang to support <a href="/wiki/Metaprogramming" title="Metaprogramming">metaprogramming</a> with Lisp macros and an improved developer experience with a feature-rich <a href="/wiki/Read%E2%80%93eval%E2%80%93print_loop" title="Read–eval–print loop">read–eval–print loop</a> (REPL).<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> LFE is actively supported on all recent releases of Erlang; the oldest version of Erlang supported is R14. </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=LFE_(programming_language)&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-halign-left" typeof="mw:File/Thumb"><a href="/wiki/File:Robert_Virding,_2013.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Robert_Virding%2C_2013.jpg/130px-Robert_Virding%2C_2013.jpg" decoding="async" width="130" height="180" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Robert_Virding%2C_2013.jpg/195px-Robert_Virding%2C_2013.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Robert_Virding%2C_2013.jpg/260px-Robert_Virding%2C_2013.jpg 2x" data-file-width="489" data-file-height="676" /></a><figcaption>Robert Virding</figcaption></figure> <div class="mw-heading mw-heading3"><h3 id="Initial_release">Initial release</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=2" title="Edit section: Initial release"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Initial work on LFE began in 2007, when Robert Virding started creating a prototype of Lisp running on Erlang.<sup id="cite_ref-lfe-history_2-0" class="reference"><a href="#cite_note-lfe-history-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> This work was focused primarily on parsing and exploring what an implementation might look like. No version control system was being used at the time, so tracking exact initial dates is somewhat problematic.<sup id="cite_ref-lfe-history_2-1" class="reference"><a href="#cite_note-lfe-history-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> </p><p>Virding announced the first release of LFE on the <i>Erlang Questions</i> mail list in March 2008.<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> This release of LFE was very limited: it did not handle recursive <code>letrec</code>s, <code>binary</code>s, <code>receive</code>, or <code>try</code>; it also did not support a Lisp shell.<sup id="cite_ref-release-announcement_4-0" class="reference"><a href="#cite_note-release-announcement-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p>Initial development of LFE was done with version R12B-0 of Erlang<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> on a Dell XPS laptop.<sup id="cite_ref-release-announcement_4-1" class="reference"><a href="#cite_note-release-announcement-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p> <table class="toccolours" style="font-size:88%"> <caption style="font-size:112%"><style data-mw-deduplicate="TemplateStyles:r1045256916">.mw-parser-output .navbar-header{text-align:center;position:relative;white-space:nowrap}.mw-parser-output .navbar-header .navbar{position:absolute;right:0;top:0;margin:0 5px}</style><div class="navbar-header">Timeline of Lisp dialects<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: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:Lisp" title="Template:Lisp"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Lisp" title="Template talk:Lisp"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Lisp" title="Special:EditPage/Template:Lisp"><abbr title="Edit this template">e</abbr></a></li></ul></div></div> </caption> <tbody><tr style="background:lavender;"> <th width="7%">1958 </th> <th width="7%">1960 </th> <th width="7%">1965 </th> <th width="7%">1970 </th> <th width="7%">1975 </th> <th width="7%">1980 </th> <th width="7%">1985 </th> <th width="7%">1990 </th> <th width="7%">1995 </th> <th width="7%">2000 </th> <th width="7%">2005 </th> <th width="7%">2010 </th> <th width="8%">2015 </th> <th width="8%">2020 </th></tr> <tr> <th align="left" colspan="3" style="background:lightgray"> LISP 1, 1.5, <a href="/wiki/LISP_2" title="LISP 2">LISP 2<sup>(abandoned)</sup></a> </th> <td colspan="10"> </td></tr> <tr> <td colspan="2"> </td> <th align="left" colspan="5" style="background:lightgray"> <a href="/wiki/Maclisp" title="Maclisp">Maclisp</a> </th> <td colspan="6"> </td></tr> <tr> <td colspan="3"> </td> <th align="left" colspan="5" style="background:lightgray"> <a href="/wiki/Interlisp" title="Interlisp">Interlisp</a> </th> <td colspan="5"> </td></tr> <tr> <td colspan="3"> </td> <th align="left" colspan="2" style="background:lightgray"> <a href="/wiki/MDL_(programming_language)" title="MDL (programming language)">MDL</a> </th> <td colspan="5"> </td></tr> <tr> <td colspan="4"> </td> <th align="left" colspan="5" style="background:lightgray"> <a href="/wiki/Lisp_Machine_Lisp" title="Lisp Machine Lisp">Lisp Machine Lisp</a> </th> <td colspan="4"> </td></tr> <tr> <td colspan="4"> </td> <th align="left" colspan="4" style="background:lightgray"> <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a> </th> <th align="left" colspan="2" style="background:lightgray"> R5RS </th> <th align="left" colspan="1" style="background:lightgray"> R6RS </th> <th align="left" colspan="3" style="background:lightgray"> R7RS small </th></tr> <tr> <td colspan="4"> </td> <th align="left" colspan="2" style="background:lightgray"> <a href="/wiki/NIL_(programming_language)" title="NIL (programming language)">NIL</a> </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="2" style="background:lightgray"> <a href="/wiki/Z-machine#ZIL_(Zork_Implementation_Language)" title="Z-machine">ZIL (Zork Implementation Language)</a> </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="2" style="background:lightgray"> <a href="/wiki/Franz_Lisp" title="Franz Lisp">Franz Lisp</a> </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="2" style="background:lightgray"> <a href="/wiki/Common_Lisp" title="Common Lisp">Common Lisp</a> </th> <th align="left" colspan="7" style="background:lightgray"> ANSI standard </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="9" style="background:lightgray"> <a href="/wiki/Le_Lisp" title="Le Lisp">Le Lisp</a> </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="11" style="background:lightgray"> <a href="/wiki/MIT_Scheme" class="mw-redirect" title="MIT Scheme">MIT Scheme</a> </th></tr> <tr> <td colspan="5"> </td> <th align="left" colspan="4" style="background:lightgray"> <a href="/wiki/XLISP" title="XLISP">XLISP</a> </th></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="3" style="background:lightgray"> <a href="/wiki/T_(programming_language)" title="T (programming language)">T</a> </th> <td colspan="4"> </td></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/Chez_Scheme" title="Chez Scheme">Chez Scheme</a> </th></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/Emacs_Lisp" title="Emacs Lisp">Emacs Lisp</a> </th></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/AutoLISP" title="AutoLISP">AutoLISP</a> </th></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/PicoLisp" title="PicoLisp">PicoLisp</a> </th></tr> <tr> <td colspan="6"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/Gambit_(Scheme_implementation)" title="Gambit (Scheme implementation)">Gambit</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="6" style="background:lightgray"> <a href="/wiki/EuLisp" title="EuLisp">EuLisp</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/ISLISP" title="ISLISP">ISLISP</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="8" style="background:lightgray"> <a href="/wiki/OpenLisp" title="OpenLisp">OpenLisp</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="4" style="background:lightgray"> <a href="/wiki/PLT_Scheme" class="mw-redirect" title="PLT Scheme">PLT Scheme</a> </th> <th align="left" colspan="3" style="background:lightgray"> <a href="/wiki/Racket_(programming_language)" title="Racket (programming language)">Racket</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="7" style="background:lightgray"> <a href="/wiki/NewLISP" title="NewLISP">newLISP</a> </th></tr> <tr> <td colspan="7"> </td> <th align="left" colspan="7" style="background:lightgray"> <a href="/wiki/GNU_Guile" title="GNU Guile">GNU Guile</a> </th></tr> <tr> <td colspan="9"> </td> <th align="left" colspan="5" style="background:lightgray"> <a href="/wiki/AutoLISP" title="AutoLISP">Visual LISP</a> </th></tr> <tr> <td colspan="10"> </td> <th align="left" colspan="4" style="background:lightgray"> <a href="/wiki/Clojure" title="Clojure">Clojure</a> </th></tr> <tr> <td colspan="10"> </td> <th align="left" colspan="4" style="background:lightgray"> <a href="/wiki/Arc_(programming_language)" title="Arc (programming language)">Arc</a> </th></tr> <tr> <td colspan="10"> </td> <th align="left" colspan="4" style="background:lightgray"> <a class="mw-selflink selflink">LFE</a> </th></tr> <tr> <td colspan="11"> </td> <th align="left" colspan="3" style="background:lightgray"> <a href="/wiki/Hy_(programming_language)" title="Hy (programming language)">Hy</a> </th></tr> <tr> <td colspan="13"> </td> <th align="left" colspan="3" style="background:lightgray"> <a href="/w/index.php?title=Chialisp&action=edit&redlink=1" class="new" title="Chialisp (page does not exist)">Chialisp</a> </th></tr> </tbody></table> <div class="mw-heading mw-heading3"><h3 id="Motives">Motives</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=3" title="Edit section: Motives"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Robert Virding has stated that there were several reasons why he started the LFE programming language:<sup id="cite_ref-lfe-history_2-2" class="reference"><a href="#cite_note-lfe-history-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> </p> <ul><li>He had prior experience programming in Lisp.</li> <li>Given his prior experience, he was interested in implementing his own Lisp.</li> <li>In particular, he wanted to implement a Lisp in Erlang: not only was he curious to see how it would run on and integrate with Erlang, he wanted to see what it would <i>look</i> like.</li> <li>Since helping to create the Erlang programming language, he had had the goal of making a Lisp which was specifically designed to run on the BEAM and able to fully interact with Erlang/OTP.</li> <li>He wanted to experiment with <a href="/wiki/Compiler" title="Compiler">compiling</a> another language on Erlang. As such, he saw LFE as a means to explore this by generating Core Erlang and plugging it into the backend of the Erlang compiler.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Features">Features</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=4" title="Edit section: Features"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>A language targeting <a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a> virtual machine (BEAM)</li> <li>Seamless <a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a> integration: zero-penalty Erlang function calls (and vice versa)</li> <li>Metaprogramming via <a href="/wiki/Lisp_macro" class="mw-redirect" title="Lisp macro">Lisp macros</a> and the <a href="/wiki/Homoiconicity" title="Homoiconicity">homoiconicity</a> of a Lisp</li> <li><a href="/wiki/Common_Lisp" title="Common Lisp">Common Lisp</a>-style documentation via both source code <a href="/wiki/Comment_(computer_programming)" title="Comment (computer programming)">comments</a> and docstrings</li> <li><a href="/wiki/Shared-nothing_architecture" title="Shared-nothing architecture">Shared-nothing architecture</a> concurrent programming via message passing (<a href="/wiki/Actor_model" title="Actor model">Actor model</a>)</li> <li>Emphasis on <a href="/wiki/Recursion_(computer_science)" title="Recursion (computer science)">recursion</a> and <a href="/wiki/Higher-order_function" title="Higher-order function">higher-order functions</a> instead of <a href="/wiki/Side-effect_(computer_science)" class="mw-redirect" title="Side-effect (computer science)">side-effect</a>-based <a href="/wiki/Loop_(computing)" class="mw-redirect" title="Loop (computing)">looping</a></li> <li>A full <a href="/wiki/Read%E2%80%93eval%E2%80%93print_loop" title="Read–eval–print loop">read–eval–print loop</a> (REPL) for interactive development and testing (unlike Erlang's shell, the LFE REPL supports function and macro definitions)</li> <li><a href="/wiki/Pattern_matching" title="Pattern matching">Pattern matching</a></li> <li>Hot loading of code</li> <li>A <a href="/wiki/Lisp-1_vs._Lisp-2#The_function_namespace" class="mw-redirect" title="Lisp-1 vs. Lisp-2">Lisp-2</a> separation of namespaces for variables and functions</li> <li><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> inter-operation via JInterface and Erjang</li> <li><a href="/wiki/Scripting_language" title="Scripting language">Scripting</a> abilities with both <code>lfe</code> and <code>lfescript</code></li></ul> <div class="mw-heading mw-heading2"><h2 id="Syntax_and_semantics">Syntax and semantics</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=5" title="Edit section: Syntax and semantics"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Symbolic_expressions_(S-expressions)"><span id="Symbolic_expressions_.28S-expressions.29"></span>Symbolic expressions (S-expressions)</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=6" title="Edit section: Symbolic expressions (S-expressions)"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Like Lisp, LFE is an <a href="/wiki/Expression_(computer_science)" title="Expression (computer science)">expression</a>-oriented language. Unlike non-<a href="/wiki/Homoiconicity" title="Homoiconicity">homoiconic</a> programming languages, Lisps make no or little syntactic distinction between <i>expressions</i> and <i><a href="/wiki/Statement_(programming)" class="mw-redirect" title="Statement (programming)">statements</a></i>: all code and data are written as expressions. LFE brought homoiconicity to the Erlang VM. </p> <div class="mw-heading mw-heading3"><h3 id="Lists">Lists</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=7" title="Edit section: Lists"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In LFE, the list data type is written with its elements separated by whitespace, and surrounded by parentheses. For example, <code class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="ss">'foo</span><span class="p">)</span></code> is a list whose elements are the integers <code class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><span class="mi">1</span></code> and <code class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><span class="mi">2</span></code>, and the atom [[foo|<code class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><span class="nv">foo</span></code>]]. These values are implicitly typed: they are respectively two integers and a Lisp-specific data type called a <i>symbolic atom</i>, and need not be declared as such. </p><p>As seen in the example above, LFE expressions are written as lists, using <a href="/wiki/Prefix_notation" class="mw-redirect" title="Prefix notation">prefix notation</a>. The first element in the list is the name of a <i>form</i>, i.e., a function, operator, or macro. The remainder of the list are the arguments. </p> <div class="mw-heading mw-heading3"><h3 id="Operators">Operators</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=8" title="Edit section: Operators"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The LFE-Erlang operators are used in the same way. The expression </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="p">(</span><span class="nb">+</span><span class="w"> </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="w"> </span><span class="mi">5</span><span class="w"> </span><span class="mi">6</span><span class="p">)</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span> </pre></div> <p>evaluates to 42. Unlike functions in Erlang and LFE, arithmetic operators in Lisp are <a href="/wiki/Variadic_function" title="Variadic function">variadic</a> (or <i>n-ary</i>), able to take any number of arguments. </p> <div class="mw-heading mw-heading3"><h3 id="Lambda_expressions_and_function_definition">Lambda expressions and function definition</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=9" title="Edit section: Lambda expressions and function definition"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>LFE has <i>lambda</i>, just like Common Lisp. It also, however, has <i>lambda-match</i> to account for Erlang's pattern-matching abilities in anonymous function calls. </p> <div class="mw-heading mw-heading2"><h2 id="Erlang_idioms_in_LFE">Erlang idioms in LFE</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=10" title="Edit section: Erlang idioms in LFE"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This section does not represent a complete comparison between Erlang and LFE, but should give a taste. </p> <div class="mw-heading mw-heading3"><h3 id="Pattern_matching">Pattern matching</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=11" title="Edit section: Pattern matching"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="mi">1</span><span class="o">></span><span class="w"> </span><span class="p">{</span><span class="nv">Len</span><span class="p">,</span><span class="nv">Status</span><span class="p">,</span><span class="nv">Msg</span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">8</span><span class="p">,</span><span class="n">ok</span><span class="p">,</span><span class="s">"Trillian"</span><span class="p">}.</span> <span class="w"> </span><span class="p">{</span><span class="mi">8</span><span class="p">,</span><span class="n">ok</span><span class="p">,</span><span class="s">"Trillian"</span><span class="p">}</span> <span class="w"> </span><span class="mi">2</span><span class="o">></span><span class="w"> </span><span class="nv">Msg</span><span class="p">.</span> <span class="w"> </span><span class="s">"Trillian"</span> </pre></div> <p>LFE: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="p">(</span><span class="nb">set</span><span class="w"> </span><span class="p">(</span><span class="nv">tuple</span><span class="w"> </span><span class="nv">len</span><span class="w"> </span><span class="nv">status</span><span class="w"> </span><span class="nv">msg</span><span class="p">)</span><span class="w"> </span><span class="o">#(</span><span class="mi">8</span><span class="w"> </span><span class="nv">ok</span><span class="w"> </span><span class="s">"Trillian"</span><span class="p">))</span> <span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="c1">;; or with LFE literal tuple syntax:</span> <span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="p">(</span><span class="nb">set</span><span class="w"> </span><span class="o">`#(,</span><span class="nv">len</span><span class="w"> </span><span class="o">,</span><span class="nv">status</span><span class="w"> </span><span class="o">,</span><span class="nv">msg</span><span class="p">)</span><span class="w"> </span><span class="o">#(</span><span class="mi">8</span><span class="w"> </span><span class="nv">ok</span><span class="w"> </span><span class="s">"Trillian"</span><span class="p">))</span> <span class="w"> </span><span class="o">#(</span><span class="mi">8</span><span class="w"> </span><span class="nv">ok</span><span class="w"> </span><span class="s">"Trillian"</span><span class="p">)</span> <span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="nv">msg</span> <span class="w"> </span><span class="s">"Trillian"</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="List_comprehensions">List comprehensions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=12" title="Edit section: List comprehensions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="mi">1</span><span class="o">></span><span class="w"> </span><span class="p">[</span><span class="nb">trunc</span><span class="p">(</span><span class="nn">math</span><span class="p">:</span><span class="nf">pow</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="nv">X</span><span class="p">))</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="nv">X</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]].</span> <span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">27</span><span class="p">]</span> </pre></div> <p>LFE: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="p">(</span><span class="nv">list-comp</span> <span class="w"> </span><span class="p">((</span><span class="nv"><-</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="mi">0</span><span class="w"> </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="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="nv">trunc</span><span class="w"> </span><span class="p">(</span><span class="nv">math:pow</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="nv">x</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="mi">27</span><span class="p">)</span> </pre></div> <p>Or idiomatic functional style: </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="nv">lfe></span><span class="w"> </span><span class="p">(</span><span class="nv">lists:map</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">x</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">trunc</span><span class="w"> </span><span class="p">(</span><span class="nv">math:pow</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="nv">x</span><span class="p">)))</span> <span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="mi">0</span><span class="w"> </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="p">))</span> <span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="mi">27</span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Guards">Guards</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=13" title="Edit section: Guards"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="n">right_number</span><span class="p">(</span><span class="nv">X</span><span class="p">)</span><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="nv">X</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">42</span><span class="p">;</span><span class="w"> </span><span class="nv">X</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">276709</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="n">true</span><span class="p">;</span> <span class="w"> </span><span class="n">right_number</span><span class="p">(_)</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="n">false</span><span class="p">.</span> </pre></div> <p>LFE: </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">right-number?</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">when</span><span class="w"> </span><span class="p">(</span><span class="nv">orelse</span><span class="w"> </span><span class="p">(</span><span class="nv">==</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="mi">42</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">==</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="mi">276709</span><span class="p">)))</span> <span class="w"> </span><span class="ss">'true</span><span class="p">)</span> <span class="w"> </span><span class="p">((</span><span class="nv">_</span><span class="p">)</span><span class="w"> </span><span class="ss">'false</span><span class="p">))</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="cons'ing_in_function_heads"><span id="cons.27ing_in_function_heads"></span>cons'ing in function heads</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=14" title="Edit section: cons'ing in function heads"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="n">sum</span><span class="p">(</span><span class="nv">L</span><span class="p">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">sum</span><span class="p">(</span><span class="nv">L</span><span class="p">,</span><span class="mi">0</span><span class="p">).</span> <span class="w"> </span><span class="n">sum</span><span class="p">([],</span><span class="w"> </span><span class="nv">Total</span><span class="p">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="nv">Total</span><span class="p">;</span> <span class="w"> </span><span class="n">sum</span><span class="p">([</span><span class="nv">H</span><span class="p">|</span><span class="nv">T</span><span class="p">],</span><span class="w"> </span><span class="nv">Total</span><span class="p">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="n">sum</span><span class="p">(</span><span class="nv">T</span><span class="p">,</span><span class="w"> </span><span class="nv">H</span><span class="o">+</span><span class="nv">Total</span><span class="p">).</span> </pre></div> <p>LFE: </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">sum</span><span class="w"> </span><span class="p">(</span><span class="nv">l</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">sum</span><span class="w"> </span><span class="nv">l</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">defun</span><span class="w"> </span><span class="nv">sum</span> <span class="w"> </span><span class="p">((</span><span class="o">'</span><span class="p">()</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span> <span class="w"> </span><span class="p">(((</span><span class="nb">cons</span><span class="w"> </span><span class="nv">h</span><span class="w"> </span><span class="no">t</span><span class="p">)</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">sum</span><span class="w"> </span><span class="no">t</span><span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="nv">h</span><span class="w"> </span><span class="nv">total</span><span class="p">))))</span> </pre></div> <p>or using a ``cons`` literal instead of the constructor form: </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">sum</span><span class="w"> </span><span class="p">(</span><span class="nv">l</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">sum</span><span class="w"> </span><span class="nv">l</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">defun</span><span class="w"> </span><span class="nv">sum</span> <span class="w"> </span><span class="p">((</span><span class="o">'</span><span class="p">()</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span> <span class="w"> </span><span class="p">((</span><span class="o">`</span><span class="p">(</span><span class="o">,</span><span class="nv">h</span><span class="w"> </span><span class="o">.</span><span class="w"> </span><span class="o">,</span><span class="no">t</span><span class="p">)</span><span class="w"> </span><span class="nv">total</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">sum</span><span class="w"> </span><span class="no">t</span><span class="w"> </span><span class="p">(</span><span class="nb">+</span><span class="w"> </span><span class="nv">h</span><span class="w"> </span><span class="nv">total</span><span class="p">))))</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Matching_records_in_function_heads">Matching records in function heads</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=15" title="Edit section: Matching records in function heads"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="nf">handle_info</span><span class="p">(</span><span class="n">ping</span><span class="p">,</span><span class="w"> </span><span class="nl">#state</span><span class="w"> </span><span class="p">{</span><span class="n">remote_pid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">undefined</span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">State</span><span class="p">)</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="nn">gen_server</span><span class="p">:</span><span class="nf">cast</span><span class="p">(</span><span class="n">self</span><span class="p">(),</span><span class="w"> </span><span class="n">ping</span><span class="p">),</span> <span class="w"> </span><span class="p">{</span><span class="n">noreply</span><span class="p">,</span><span class="w"> </span><span class="nv">State</span><span class="p">};</span> <span class="nf">handle_info</span><span class="p">(</span><span class="n">ping</span><span class="p">,</span><span class="w"> </span><span class="nv">State</span><span class="p">)</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="p">{</span><span class="n">noreply</span><span class="p">,</span><span class="w"> </span><span class="nv">State</span><span class="p">};</span> </pre></div> <p>LFE: </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">handle_info</span> <span class="w"> </span><span class="p">((</span><span class="ss">'ping</span><span class="w"> </span><span class="p">(</span><span class="nb">=</span><span class="w"> </span><span class="p">(</span><span class="nv">match-state</span><span class="w"> </span><span class="nv">remote-pid</span><span class="w"> </span><span class="ss">'undefined</span><span class="p">)</span><span class="w"> </span><span class="nv">state</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">gen_server:cast</span><span class="w"> </span><span class="p">(</span><span class="nv">self</span><span class="p">)</span><span class="w"> </span><span class="ss">'ping</span><span class="p">)</span> <span class="w"> </span><span class="o">`#(</span><span class="nv">noreply</span><span class="w"> </span><span class="o">,</span><span class="nv">state</span><span class="p">))</span> <span class="w"> </span><span class="p">((</span><span class="ss">'ping</span><span class="w"> </span><span class="nv">state</span><span class="p">)</span> <span class="w"> </span><span class="o">`#(</span><span class="nv">noreply</span><span class="w"> </span><span class="o">,</span><span class="nv">state</span><span class="p">)))</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Receiving_messages">Receiving messages</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=16" title="Edit section: Receiving messages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Erlang: </p> <div class="mw-highlight mw-highlight-lang-erlang mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="n">universal_server</span><span class="p">()</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="k">receive</span> <span class="w"> </span><span class="p">{</span><span class="n">become</span><span class="p">,</span><span class="w"> </span><span class="nv">Func</span><span class="p">}</span><span class="w"> </span><span class="o">-></span> <span class="w"> </span><span class="nv">Func</span><span class="p">()</span> <span class="w"> </span><span class="k">end</span><span class="p">.</span> </pre></div> <p>LFE: </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">universal-server</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="p">(</span><span class="nv">receive</span> <span class="w"> </span><span class="p">((</span><span class="nv">tuple</span><span class="w"> </span><span class="ss">'become</span><span class="w"> </span><span class="nv">func</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">func</span><span class="p">))))</span> </pre></div> <p>or: </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">universal-server</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="p">(</span><span class="nv">receive</span> <span class="w"> </span><span class="p">(</span><span class="o">`#(</span><span class="nv">become</span><span class="w"> </span><span class="o">,</span><span class="nv">func</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">func</span><span class="p">))))</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=17" title="Edit section: Examples"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Erlang_interoperability">Erlang interoperability</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=18" title="Edit section: Erlang interoperability"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Calls to Erlang functions take the form <i>(<module>:<function> <arg1> ... <argn>)</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">io:format</span><span class="w"> </span><span class="s">"Hello, World!"</span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Functional_paradigm">Functional paradigm</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=19" title="Edit section: Functional paradigm"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Using recursion to define the <a href="/wiki/Ackermann_function" title="Ackermann function">Ackermann function</a>: </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">ackermann</span> <span class="w"> </span><span class="p">((</span><span class="mi">0</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">+</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span> <span class="w"> </span><span class="p">((</span><span class="nv">m</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">ackermann</span><span class="w"> </span><span class="p">(</span><span class="nb">-</span><span class="w"> </span><span class="nv">m</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span> <span class="w"> </span><span class="p">((</span><span class="nv">m</span><span class="w"> </span><span class="nv">n</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">ackermann</span><span class="w"> </span><span class="p">(</span><span class="nb">-</span><span class="w"> </span><span class="nv">m</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">ackermann</span><span class="w"> </span><span class="nv">m</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="mi">1</span><span class="p">)))))</span> </pre></div> <p>Composing functions: </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">compose</span><span class="w"> </span><span class="p">(</span><span class="nv">f</span><span class="w"> </span><span class="nv">g</span><span class="p">)</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">x</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">f</span> <span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">g</span><span class="w"> </span><span class="nv">x</span><span class="p">))))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">check</span><span class="w"> </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">sin-asin</span><span class="w"> </span><span class="p">(</span><span class="nv">compose</span><span class="w"> </span><span class="nf">#'</span><span class="nv">sin/1</span><span class="w"> </span><span class="nf">#'</span><span class="nv">asin/1</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">expected</span><span class="w"> </span><span class="p">(</span><span class="nb">sin</span><span class="w"> </span><span class="p">(</span><span class="nb">asin</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="nv">compose-result</span><span class="w"> </span><span class="p">(</span><span class="nb">funcall</span><span class="w"> </span><span class="nv">sin-asin</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="nv">io:format</span><span class="w"> </span><span class="s">"Expected answer: ~p~n"</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="nv">expected</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">io:format</span><span class="w"> </span><span class="s">"Answer with compose: ~p~n"</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="nv">compose-result</span><span class="p">))))</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Concurrency">Concurrency</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=LFE_(programming_language)&action=edit&section=20" title="Edit section: Concurrency"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Message-passing with Erlang's light-weight "processes": </p> <div class="mw-highlight mw-highlight-lang-lisp mw-content-ltr" dir="ltr"><pre><span></span><span class="p">(</span><span class="nv">defmodule</span><span class="w"> </span><span class="nv">messenger-back</span> <span class="w"> </span><span class="p">(</span><span class="nb">export</span><span class="w"> </span><span class="p">(</span><span class="nv">print-result</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">send-message</span><span class="w"> </span><span class="mi">2</span><span class="p">)))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">print-result</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="p">(</span><span class="nv">receive</span> <span class="w"> </span><span class="p">((</span><span class="nv">tuple</span><span class="w"> </span><span class="nv">pid</span><span class="w"> </span><span class="nv">msg</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">io:format</span><span class="w"> </span><span class="s">"Received message: '~s'~n"</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="nv">msg</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">io:format</span><span class="w"> </span><span class="s">"Sending message to process ~p ...~n"</span><span class="w"> </span><span class="p">(</span><span class="nb">list</span><span class="w"> </span><span class="nv">pid</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">!</span><span class="w"> </span><span class="nv">pid</span><span class="w"> </span><span class="p">(</span><span class="nv">tuple</span><span class="w"> </span><span class="nv">msg</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">print-result</span><span class="p">))))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">send-message</span><span class="w"> </span><span class="p">(</span><span class="nv">calling-pid</span><span class="w"> </span><span class="nv">msg</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">spawned-pid</span><span class="w"> </span><span class="p">(</span><span class="nv">spawn</span><span class="w"> </span><span class="ss">'messenger-back</span><span class="w"> </span><span class="ss">'print-result</span><span class="w"> </span><span class="p">())))</span> <span class="w"> </span><span class="p">(</span><span class="nv">!</span><span class="w"> </span><span class="nv">spawned-pid</span><span class="w"> </span><span class="p">(</span><span class="nv">tuple</span><span class="w"> </span><span class="nv">calling-pid</span><span class="w"> </span><span class="nv">msg</span><span class="p">))))</span> </pre></div> <p>Multiple simultaneous HTTP requests: </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">parse-args</span><span class="w"> </span><span class="p">(</span><span class="nv">flag</span><span class="p">)</span> <span class="w"> </span><span class="s">"Given one or more command-line arguments, extract the passed values.</span> <span class="s"> For example, if the following was passed via the command line:</span> <span class="s"> $ erl -my-flag my-value-1 -my-flag my-value-2</span> <span class="s"> One could then extract it in an LFE program by calling this function:</span> <span class="s"> (let ((args (parse-args 'my-flag)))</span> <span class="s"> ...</span> <span class="s"> )</span> <span class="s"> In this example, the value assigned to the arg variable would be a list</span> <span class="s"> containing the values my-value-1 and my-value-2."</span> <span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">((</span><span class="o">`#(</span><span class="nv">ok</span><span class="w"> </span><span class="o">,</span><span class="nv">data</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nv">init:get_argument</span><span class="w"> </span><span class="nv">flag</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="nv">lists:merge</span><span class="w"> </span><span class="nv">data</span><span class="p">)))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">get-pages</span><span class="w"> </span><span class="p">()</span> <span class="w"> </span><span class="s">"With no argument, assume 'url parameter was passed via command line."</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">urls</span><span class="w"> </span><span class="p">(</span><span class="nv">parse-args</span><span class="w"> </span><span class="ss">'url</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="nv">get-pages</span><span class="w"> </span><span class="nv">urls</span><span class="p">)))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">get-pages</span><span class="w"> </span><span class="p">(</span><span class="nv">urls</span><span class="p">)</span> <span class="w"> </span><span class="s">"Start inets and make (potentially many) HTTP requests."</span> <span class="w"> </span><span class="p">(</span><span class="nv">inets:start</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">plists:map</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">x</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">get-page</span><span class="w"> </span><span class="nv">x</span><span class="p">))</span><span class="w"> </span><span class="nv">urls</span><span class="p">))</span> <span class="p">(</span><span class="nb">defun</span><span class="w"> </span><span class="nv">get-page</span><span class="w"> </span><span class="p">(</span><span class="nv">url</span><span class="p">)</span> <span class="w"> </span><span class="s">"Make a single HTTP request."</span> <span class="w"> </span><span class="p">(</span><span class="k">let*</span><span class="w"> </span><span class="p">((</span><span class="nc">method</span><span class="w"> </span><span class="ss">'get</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">headers</span><span class="w"> </span><span class="o">'</span><span class="p">())</span> <span class="w"> </span><span class="p">(</span><span class="nv">request-data</span><span class="w"> </span><span class="o">`#(,</span><span class="nv">url</span><span class="w"> </span><span class="o">,</span><span class="nv">headers</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">http-options</span><span class="w"> </span><span class="p">())</span> <span class="w"> </span><span class="p">(</span><span class="nv">request-options</span><span class="w"> </span><span class="o">'</span><span class="p">(</span><span class="o">#(</span><span class="nv">sync</span><span class="w"> </span><span class="nv">false</span><span class="p">))))</span> <span class="w"> </span><span class="p">(</span><span class="nv">httpc:request</span><span class="w"> </span><span class="nc">method</span><span class="w"> </span><span class="nv">request-data</span><span class="w"> </span><span class="nv">http-options</span><span class="w"> </span><span class="nv">request-options</span><span class="p">)</span> <span class="w"> </span><span class="p">(</span><span class="nv">receive</span> <span class="w"> </span><span class="p">(</span><span class="o">`#(</span><span class="nv">http</span><span class="w"> </span><span class="o">#(,</span><span class="nv">request-id</span><span class="w"> </span><span class="o">#(</span><span class="nb">error</span><span class="w"> </span><span class="o">,</span><span class="nv">reason</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="nv">io:format</span><span class="w"> </span><span class="s">"Error: ~p~n"</span><span class="w"> </span><span class="o">`</span><span class="p">(</span><span class="o">,</span><span class="nv">reason</span><span class="p">)))</span> <span class="w"> </span><span class="p">(</span><span class="o">`#(</span><span class="nv">http</span><span class="w"> </span><span class="o">#(,</span><span class="nv">request-id</span><span class="w"> </span><span class="o">,</span><span class="nv">result</span><span class="p">))</span> <span class="w"> </span><span class="p">(</span><span class="nv">io:format</span><span class="w"> </span><span class="s">"Result: ~p~n"</span><span class="w"> </span><span class="o">`</span><span class="p">(</span><span class="o">,</span><span class="nv">result</span><span class="p">))))))</span> </pre></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=LFE_(programming_language)&action=edit&section=21" 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 reflist-columns references-column-width"> <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 id="CITEREFVirding" class="citation web cs1">Virding, Robert. <a rel="nofollow" class="external text" href="http://www.erlang-factory.com/upload/presentations/61/Robertvirding-LispFlavouredErlang.pdf">"Lisp Flavored Erlang"</a> <span class="cs1-format">(PDF)</span>. <i>Erlang Factory</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-01-17</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Erlang+Factory&rft.atitle=Lisp+Flavored+Erlang&rft.aulast=Virding&rft.aufirst=Robert&rft_id=http%3A%2F%2Fwww.erlang-factory.com%2Fupload%2Fpresentations%2F61%2FRobertvirding-LispFlavouredErlang.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ALFE+%28programming+language%29" class="Z3988"></span></span> </li> <li id="cite_note-lfe-history-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-lfe-history_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lfe-history_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-lfe-history_2-2"><sup><i><b>c</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="https://groups.google.com/d/msg/lisp-flavoured-erlang/XA5HeLbQQDk/TUHabZCHXB0J">"LFE History on the Lisp Flavored Erlang mail list"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-05-28</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=LFE+History+on+the+Lisp+Flavored+Erlang+mail+list&rft_id=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsg%2Flisp-flavoured-erlang%2FXA5HeLbQQDk%2FTUHabZCHXB0J&rfr_id=info%3Asid%2Fen.wikipedia.org%3ALFE+%28programming+language%29" class="Z3988"></span></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="https://groups.google.com/d/msg/erlang-questions/rf43UofUvvQ/2-L1AecnkUoJ">"LFE announcement on Erlang Questions mail list"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-01-17</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=LFE+announcement+on+Erlang+Questions+mail+list&rft_id=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsg%2Ferlang-questions%2Frf43UofUvvQ%2F2-L1AecnkUoJ&rfr_id=info%3Asid%2Fen.wikipedia.org%3ALFE+%28programming+language%29" class="Z3988"></span></span> </li> <li id="cite_note-release-announcement-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-release-announcement_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-release-announcement_4-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 id="CITEREFArmstrongVirding2013" class="citation interview cs1">Armstrong, Joe; Virding, Robert (2013-12-30). <a rel="nofollow" class="external text" href="http://www.erlang.org/course/history.html">"Hardware used in the development of Erlang and LFE"</a> (Email exchange). Interviewed by Duncan McGreggor<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-01-17</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Hardware+used+in+the+development+of+Erlang+and+LFE&rft.date=2013-12-30&rft.aulast=Armstrong&rft.aufirst=Joe&rft.au=Virding%2C+Robert&rft_id=http%3A%2F%2Fwww.erlang.org%2Fcourse%2Fhistory.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ALFE+%28programming+language%29" 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://groups.google.com/d/msg/erlang-questions/rf43UofUvvQ/dthHortHwGoJ">"Follow-up to LFE announcement on Erlang Questions mail list"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-01-17</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Follow-up+to+LFE+announcement+on+Erlang+Questions+mail+list&rft_id=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsg%2Ferlang-questions%2Frf43UofUvvQ%2FdthHortHwGoJ&rfr_id=info%3Asid%2Fen.wikipedia.org%3ALFE+%28programming+language%29" class="Z3988"></span></span> </li> </ol></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=LFE_(programming_language)&action=edit&section=22" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="http://lfe.io">Official website</a></span></span></li> <li><a rel="nofollow" class="external text" href="https://github.com/rvirding/lfe">LFE</a> on <a href="/wiki/GitHub" title="GitHub">GitHub</a></li> <li><a rel="nofollow" class="external text" href="https://lfe.gitbooks.io/quick-start/content/index.html">LFE Quick Start</a></li> <li><a rel="nofollow" class="external text" href="https://lfe.gitbooks.io/reference-guide/">LFE User Guide</a></li> <li><a rel="nofollow" class="external text" href="http://rosettacode.org/wiki/Category:LFE">LFE on Rosetta Code</a></li></ul> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><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="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 href="/wiki/Common_Lisp" title="Common Lisp">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 class="mw-selflink selflink">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 href="/wiki/Common_Lisp" title="Common Lisp">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> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐6d848949df‐9czqt Cached time: 20241112213257 Cache expiry: 1564036 Reduced expiry: true Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.506 seconds Real time usage: 0.675 seconds Preprocessor visited node count: 2029/1000000 Post‐expand include size: 109689/2097152 bytes Template argument size: 2680/2097152 bytes Highest expansion depth: 27/100 Expensive parser function count: 29/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 69903/5000000 bytes Lua time usage: 0.272/10.000 seconds Lua memory usage: 5790896/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 514.490 1 -total 23.07% 118.675 1 Template:Reflist 22.90% 117.822 2 Template:Infobox 18.79% 96.693 1 Template:Primary_sources 18.58% 95.569 4 Template:Cite_web 17.03% 87.614 9 Template:Navbox 15.93% 81.983 1 Template:Infobox_programming_language 15.22% 78.284 1 Template:Ambox 13.70% 70.508 1 Template:Lisp_programming_language 12.07% 62.075 1 Template:Lisp --> <!-- Saved in parser cache with key enwiki:pcache:idhash:41671035-0!canonical and timestamp 20241112213257 and revision id 1165968745. 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=LFE_(programming_language)&oldid=1165968745">https://en.wikipedia.org/w/index.php?title=LFE_(programming_language)&oldid=1165968745</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:Programming_languages" title="Category:Programming languages">Programming languages</a></li><li><a href="/wiki/Category:Pattern_matching_programming_languages" title="Category:Pattern matching programming languages">Pattern matching programming languages</a></li><li><a href="/wiki/Category:Lisp_programming_language_family" title="Category:Lisp programming language family">Lisp programming language family</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:Articles_lacking_reliable_references_from_August_2020" title="Category:Articles lacking reliable references from August 2020">Articles lacking reliable references from August 2020</a></li><li><a href="/wiki/Category:All_articles_lacking_reliable_references" title="Category:All articles lacking reliable references">All articles lacking reliable 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><li><a href="/wiki/Category:Official_website_different_in_Wikidata_and_Wikipedia" title="Category:Official website different in Wikidata and Wikipedia">Official website different in Wikidata and Wikipedia</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 18 July 2023, at 15:21<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=LFE_(programming_language)&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-6df7948d6c-q2npv","wgBackendResponseTime":154,"wgPageParseReport":{"limitreport":{"cputime":"0.506","walltime":"0.675","ppvisitednodes":{"value":2029,"limit":1000000},"postexpandincludesize":{"value":109689,"limit":2097152},"templateargumentsize":{"value":2680,"limit":2097152},"expansiondepth":{"value":27,"limit":100},"expensivefunctioncount":{"value":29,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":69903,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 514.490 1 -total"," 23.07% 118.675 1 Template:Reflist"," 22.90% 117.822 2 Template:Infobox"," 18.79% 96.693 1 Template:Primary_sources"," 18.58% 95.569 4 Template:Cite_web"," 17.03% 87.614 9 Template:Navbox"," 15.93% 81.983 1 Template:Infobox_programming_language"," 15.22% 78.284 1 Template:Ambox"," 13.70% 70.508 1 Template:Lisp_programming_language"," 12.07% 62.075 1 Template:Lisp"]},"scribunto":{"limitreport-timeusage":{"value":"0.272","limit":"10.000"},"limitreport-memusage":{"value":5790896,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-6d848949df-9czqt","timestamp":"20241112213257","ttl":1564036,"transientcontent":true}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"LFE (programming language)","url":"https:\/\/en.wikipedia.org\/wiki\/LFE_(programming_language)","sameAs":"http:\/\/www.wikidata.org\/entity\/Q17097207","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q17097207","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":"2014-01-17T20:09:38Z","dateModified":"2023-07-18T15:21:12Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/6\/63\/LFE_%28Lisp_Flavored_Erlang%29_Logo.png","headline":"Lisp Flavored Erlang"}</script> </body> </html>