Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Lisp (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language family}} {{Redirect|LISP|the speech impediment|Lisp|other uses|Lisp (disambiguation)}} {{Infobox programming language | name = Lisp | logo = Lisp logo.svg | logo size = 150px | paradigm = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflective programming|reflective]], [[Metaprogramming|meta]] | released = {{Start date and age|1960}} | designer = [[John McCarthy (computer scientist)|John McCarthy]] | developer = [[Steve Russell (computer scientist)|Steve Russell]], Timothy P. Hart, Mike Levin | latest release version = | latest release date = <!-- | turing-complete = Yes --> | typing = [[Dynamic typing|Dynamic]], [[Strong and weak typing|strong]] | implementations = | dialects = {{startflatlist}} * [[Arc (programming language)|Arc]] * [[AutoLISP]] * [[Clojure]] * [[Common Lisp]] * [[Emacs Lisp]] * [[EuLisp]] * [[Franz Lisp]] * [[Game Oriented Assembly Lisp|GOAL]] * [[Hy (programming language)|Hy]] * [[Interlisp]] * [[ISLISP]] * [[LeLisp]] * [[LFE (programming language)|LFE]] * [[Maclisp]] * [[MDL (programming language)|MDL]] * [[newLISP]] * [[NIL (programming language)|NIL]] * [[Picolisp]] * [[Portable Standard Lisp]] * [[Racket (programming language)|Racket]] * [[RPL (programming language)|RPL]] * [[Scheme (programming language)|Scheme]] * [[Cadence SKILL|SKILL]] * [[Spice Lisp]] * [[T (programming language)|T]] * [[Zetalisp]] {{endflatlist}} | influenced by = [[Information Processing Language]] (IPL) | influenced = {{startflatlist}} * [[CLIPS]] * [[CLU (programming language)|CLU]] * [[COWSEL]] * [[Dylan (programming language)|Dylan]] * [[Elixir (programming language)|Elixir]] * [[Microsoft Excel|Excel]] * [[Forth (programming language)|Forth]] * [[Haskell]] * [[Io (programming language)|Io]] * [[Ioke (programming language)|Ioke]] * [[JavaScript]] * [[Julia (programming language)|Julia]]<ref name="Julia">{{cite web |url=http://julia.readthedocs.org/en/latest/manual/introduction/ |title=Introduction |work=The Julia Manual |publisher=Read the Docs |access-date=2016-12-10 |archive-url=https://web.archive.org/web/20160408134008/http://julia.readthedocs.org/en/latest/manual/introduction/ |archive-date=2016-04-08}}</ref> * [[Logo (programming language)|Logo]] * [[Lua (programming language)|Lua]] * [[ML (programming language)|ML]] * [[Nim (programming language)|Nim]] * [[Nu (programming language)|Nu]] * [[OPS5]] * [[Perl]] * [[POP-2]]/[[POP-11|11]] * [[Python (programming language)|Python]] * [[R (programming language)|R]] * [[Rebol]] * [[Red (programming language)|Red]] * [[Ruby (programming language)|Ruby]] * [[Scala (programming language)|Scala]] * [[Swift (programming language)|Swift]] * [[Smalltalk]] * [[Tcl]] * [[Wolfram Language]]<ref name="Wolfram">{{cite web |url=https://www.wolfram.com/language/faq/ |title=Wolfram Language Q&A |publisher=Wolfram Research |access-date=2016-12-10}}</ref>{{endflatlist}} }} '''Lisp''' (historically '''LISP''', an abbreviation of "list processing") is a family of [[programming language]]s with a long history and a distinctive, fully [[parenthesized]] [[Polish notation#Explanation|prefix notation]].<ref name="6AN93">{{cite book |title=Milestones in computer science and information technology |author=Edwin D. Reilly |publisher=Greenwood Publishing Group |year=2003 |isbn=978-1-57356-521-9 |pages=156–157 |url=https://books.google.com/books?id=JTYPKxug49IC&pg=PA157}}</ref> Originally specified in the late 1950s, it is the second-oldest [[high-level programming language]] still in common use, after [[Fortran]].<ref name="uOUnJ">{{cite web|url=http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html|archive-url=https://web.archive.org/web/20010727170154/http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html|archive-date=2001-07-27|quote=Lisp is a survivor, having been in use for about a quarter of a century. Among the active programming languages only Fortran has had a longer life.|title=SICP: Foreword}}</ref><ref name="AfFRW">{{cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node6.html#SECTION00060000000000000000|title=Conclusions|access-date=2014-06-04|archive-url=https://web.archive.org/web/20140403021353/http://www-formal.stanford.edu/jmc/history/lisp/node6.html#SECTION00060000000000000000|archive-date=2014-04-03}}</ref> Lisp has changed since its early days, and many [[Programming language dialect|dialects]] have existed over its history. Today, the best-known general-purpose Lisp dialects are [[Common Lisp]], [[Scheme (programming language)|Scheme]], [[Racket (programming language)|Racket]], and [[Clojure]].<ref>{{Cite book |last=Steele |first=Guy L. |title=Common Lisp: the language |date=1990 |publisher=Digital Press |isbn=1-55558-041-6 |edition=2nd |location=Bedford, MA |oclc=20631879}}</ref><ref>{{Cite web |last1=Felleisen |first1=Matthias |last2=Findler |first2=Robert |last3=Flatt |first3=Matthew |last4=Krishnamurthi |first4=Shriram |last5=Barzilay |first5=Eli |last6=McCarthy |first6=Jay |last7=Tobin-Hochstadt |first7=Sam |date=2015 |title="The Racket Manifesto" |url=https://www2.ccs.neu.edu/racket/pubs/manifesto.pdf}}</ref><ref>{{Cite web |title=Clojure - Differences with other Lisps |url=https://clojure.org/reference/lisps |access-date=2022-10-27 |website=clojure.org}}</ref> Lisp was originally created as a practical [[mathematical notation]] for [[computer program]]s, influenced by (though not originally derived from)<ref name="Steele, Guy Lewis, Jr.; Sussman, Gerald Jay">{{cite web |url=https://dspace.mit.edu/handle/1721.1/6094/ |title=The Art of the Interpreter, or the Modularity Complex (Parts Zero, One, and Two), Part Zero, P. 4 |date=May 1978 |publisher=MIT Libraries |hdl=1721.1/6094 |access-date=2020-08-01|last1=Steele |first1=Guy Lewis |last2=Sussman |first2=Gerald Jay}}</ref> the notation of [[Alonzo Church]]'s [[lambda calculus]]. It quickly became a favored programming language for [[artificial intelligence]] (AI) research.<ref>{{Citation | last = Hofstadter | first = Douglas R. | title = Gödel, Escher, Bach: An Eternal Golden Braid (Twentieth Anniversary Edition) | publisher = Basic Books | year = 1999 | orig-year= 1979 | isbn = 0-465-02656-7 | url = https://books.google.com/books?id=izy9Tg6rmb8C | page = 292 | quote = One of the most important and fascinating of all computer languages is LISP (standing for "List Processing"), which was invented by John McCarthy around the time Algol was invented. Subsequently, LISP has enjoyed great popularity with workers in Artificial Intelligence. }}</ref> As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree (data structure)|tree data structures]], [[garbage collection (computer science)|automatic storage management]], [[dynamic typing]], [[Conditional (computer programming)|conditionals]], [[higher-order function]]s, [[recursion (computer science)|recursion]], the [[Self-hosting (compilers)|self-hosting compiler]],<ref name="Graham">{{cite web |title=Revenge of the Nerds |author=Paul Graham |url=http://www.paulgraham.com/icad.html |access-date=2013-03-14}}</ref> and the [[read–eval–print loop]].<ref name="hC1qm">{{Cite book|url=http://www.informit.com/articles/article.aspx?p=1671639&seqNum=3|title=Influential Programming Languages, Part 4: Lisp|last=Chisnall|first=David|date=2011-01-12}}</ref> The name ''LISP'' derives from "LISt Processor".<ref name="ArtOfLisp">{{cite book|last1=Jones|first1=Robin|last2=Maynard|first2=Clive|last3=Stewart|first3=Ian|title=The Art of Lisp Programming|date=December 6, 2012|publisher=Springer Science & Business Media|isbn=9781447117193|page=2}}</ref> [[Linked list]]s are one of Lisp's major [[data structure]]s, and Lisp [[source code]] is made of lists. Thus, Lisp programs can manipulate source code as a data structure, giving rise to the [[macro (computer science)|macro]] systems that allow programmers to create new syntax or new [[domain-specific language]]s embedded in Lisp. The interchangeability of code and data gives Lisp its instantly recognizable syntax. All program code is written as ''[[s-expression]]s'', or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function {{Lisp2|f}} that takes three arguments would be called as {{Lisp2|(f arg1 arg2 arg3)}}.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)