Copyright © Philip M. Parker, INSEAD. Terms of Use.

Definition: Lisp |
LispNoun1. A speech defect that involves pronouncing s like voiceless th and z like voiced th. 2. A flexible procedure-oriented programing language that manipulates symbols in the form of lists. Verb1. Speak with a lisp. Source: WordNet 1.7.1 Copyright © 2001 by Princeton University. All rights reserved. |
Date "lisp" was first used in popular English literature: sometime before 1588. (references) |
Note: Lisp \Lisp\ (l[i^]sp), intransitive verb [imperfect & past participle. Lisped(l[i^]spt); Lisping.]. (references) |
| Domain | Definition |
Computing | LISP n. [from `LISt Processing language', but mythically from `Lots of Irritating Superfluous Parentheses'] AI's mother tongue, a language based on the ideas of (a) variable-length lists and trees as fundamental data types, and (b) the interpretation of code as data and vice-versa. Invented by John McCarthy at MIT in the late 1950s, it is actually older than any other HLL still in use except FORTRAN. Accordingly, it has undergone considerable adaptive radiation over the years; modern variants are quite different in detail from the original LISP 1.5. The dominant HLL among hackers until the early 1980s, LISP now shares the throne with C. Its partisans claim it is the only language that is truly beautiful. See languages of choice. All LISP functions and programs are expressions that return values; this, together with the high memory utilization of LISPs, gave rise to Alan Perlis's famous quip (itself a take on an Oscar Wilde quote) that "LISP programmers know the value of everything and the cost of nothing". One significant application for LISP has been as a proof by example that most newer languages, such as COBOL and Ada, are full of unnecessary crocks. When the Right Thing has already been done once, there is no justification for bogosity in newer languages. Source: Jargon File. |
Source: compiled by the editor from various references; see credits. | |
(From Wikipedia, the free Encyclopedia)
See:
- Lisp programming language
- Lisp (speech)
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Lisp."
(From Wikipedia, the free Encyclopedia)
A lisp is a speech impediment. People with a lisp pronounce the letter 's' as 'th'. It is somewhat ironic that this handicap is called a "lisp."In some variants of Andalusian Spanish, the lisp (ceceo) has been institutionalized as a common part of the language. For example, the word zapatos (shoes) might be pronounced as [thapatoth], contrasting with Castilian [thapatos] and American Spanish [sapatos]. According to legend, the lisp became common in Castilian because one of the Spanish kings (generally identified as Felipe V or Carlos V) spoke with a lisp, and his courtiers did not want to embarrass him by speaking otherwise. Actually, 15th-century Spanish had several phonemes that are currently rendered as s. Some dialects evolved part or all of them to th.
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Lisp (speech)."
(From Wikipedia, the free Encyclopedia)
In the original LISP, the originator of the Lisp programming language family, there were two fundamental data types, atoms and lists. A list was a finite ordered sequence of elements, where each element is in itself either an atom or a list, and an atom was a number or a symbol. A symbol was essentially a unique named item, written as an alphanumeric string in source code, and used either as a variable name or as a data item in symbolic processing. For example, the list (FOO (BAR 1) 2) contains three elements: the symbol FOO, the list (BAR 1), and the number 2.The essential difference between atoms and lists was that atoms were immutable and unique. Two atoms that appeared in different places in source code but were written in the exact same way represented the same object, whereas each list was a separate object that could be altered independently of other lists and could be distinguished from other lists by comparison operators.
As more data types were introduced in later Lisp dialects, and programming styles evolved, the concept of an atom lost importance. Many dialects still retained the predicate atom for legacy compatibility, defining it as true for anything that is not a cons cell (ie. a list or a partial list).
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "LISP atom."
(From Wikipedia, the free Encyclopedia)
Lisp (which stands for "LISt Processing") is a programming language oriented towards functional programming. Its prominent features include prefix-notation syntax, dynamic typing (variables are type-neutral, but values have implicit type), and the ability to treat source code as first-class objects.
Not counting the various machine languages and assembly languages, Lisp is the second-oldest programming language still in widespread use; only Fortran is older. Like Fortran, it has changed greatly since its early days.
Strictly speaking, Lisp is now not a single language but a family of similarly-styled languages with an instantly recognizable appearance. These are known as Lisp dialects; the most well-known are Common Lisp and Scheme.
History
Information Processing Language was the first AI language, from 1955 or 1956, and already included many of the concepts, such as list-processing, which came to be used in Lisp.Lisp was invented by John McCarthy in 1958 while he was at MIT. McCarthy published its design a paper in Communications of the ACM in 1960, entitled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I". (Part II was never published.) He showed that with a couple of simple operators and a notation for functions (see minimal lisp below) you may build a whole programming language.
Lisp was originally implementated on an IBM 704 computer, and two instructions on that machine became the primitive operations for decomposing lists:
car(Contents of Address Register) andcdr(Contents of Decrement Register). Most dialects of LISP still usecarandcdrfor the operations that returning the first item in a list and the rest of the list respectively.Because of its expressiveness and flexibility, Lisp became popular with the artificial intelligence community. However, Lisp had its downsides as well: programs generate a large amount of intermediate output, which take up memory and have to be garbage collected. This made it difficult to run Lisp on the memory-limited stock hardware of the day. In the 1970s, an increasing user community and generous government funding led to the creation of LISP machines: dedicated hardware for running Lisp environments and programs.
During the 1980s and 1990s, a great effort was made to unify the numerous Lisp dialects into a single language. The new language, Common Lisp, was essentially a superset of the dialects it replaced. In 1994, ANSI published the Common Lisp standard, "ANSI X3.226-1994 Information Technology Programming Language Common Lisp." By this time the world market for Lisp was much smaller than in its heyday.
The language is amongst the oldest programming languages still in use as of the time of writing in 2003. Algol, Fortran and COBOL are of a similar vintage, and Fortran and COBOL are also still being used.
Syntax
Lisp is an expression-oriented language. Unlike most other languages, no distinction is made between "expressions" and "statements"; all code and data are written as expressions. When an expression is evaluated, it produces a value (or list of values), which then can be embedded into other expressions.McCarthy's 1958 paper introduced two types of syntax: S-expressions (Symbolic Expressions), which are also called sexp's, and M-expressions (Meta Expressions), which express functions of S-expressions. M-expressions never found favour, and almost all LISPs today use S-expressions to manipulate both code and data.
The heavy use of parentheses in S-expressions has been criticized -- one joke acronym for Lisp is "Lots of Irritating Superfluous Parentheses" -- but the S-expression syntax is also responsible for much of Lisp's power: the syntax is extremely regular, which facilitates manipulation by computer.
The reliance on expressions gives the language great flexibility. Because Lisp functions are themselves written as lists, they can be processed exactly like data: programs can easily be written to manipulate other programs. This is known as metaprogramming. Many Lisp dialects exploit this feature using macro systems, which make it possible to extend the language almost without limit.
A Lisp list is written with its elements separated by whitespace, and delimited by parentheses. For example,
(1 2 "foo")is a list whose elements have the values
1,2, and"foo". These values are implicitly typed: they are respectively two integers and a string, and do not have to be declared as such. The empty list()is also represented asnil.Expressions are written as lists, using prefix notation. The first element in the list is the name of a form, i.e. a function, operator, macro, or "special form" (see below.) The remainder of the list are the arguments. For example, the function
listreturns its arguments as a list, so the expression
(list 1 2 "foo")evaluates to the list
(1 2 "foo"). If any of the arguments are expression, they are recursively evaluated before the enclosing expression is evaluated. For example,
(list 1 2 (list 3 4))evaluates to the list
(1 2 (3 4)). Note that the third argument is a list; lists can be nested.Arithmetic operators are treated similarly. The expression
(+ 1 2 3 4)evaluates to 10. The equivalent under infix notation would be "
1+2+3+4"."Special forms" provide LISP's control structure. For example, the special form
iftakes three arguments. If the first argument is non-nil, it evaluates to the second argument; otherwise, it evaluates to the third argument. Thus, the expression
(if nil (list 1 2 "foo") (list 3 4 "bar"))evaluates to
(3 4 "bar"). (Of course, this would be more useful if a non-trivial expression had been substituted in place ofnil!)Another special form,
defun, is used to define functions. The arguments todefunare a list of arguments and the expression that the function evaluates to.
Minimal Lisp
A minimal Lisp needs just a few functions implemented in an underlying language (such as machine language, or C on Unix systems):
All the other functions may be implemented in terms of these -- albeit not very efficiently. Actual Lisp systems implement a much larger set of functions than this.
- car -- given a pair, return the first element;
- cdr -- given a pair, return the second element;
- cons -- construct a new pair with given first and second elements;
- quote -- denote an expression as literal, not to be interpreted;
- eq -- compare two objects for equality, returning true or false values;
- if or cond -- a single- or multiple-condition branch operation; and
- some mechanism to define functions, such as Common Lisp's defun, or else lambda and Scheme's define.
Example programs
Here are some examples of Lisp code. While not typical of Lisp programs used in industry, they are typical of Lisp as it is usually taught in computer science courses.As the reader may have noticed from the above discussion, Lisp syntax lends itself naturally to recursion. Mathematical problems such as the enumeration of recursively-defined sets are simple to express in this notation. This function evaluates to the factorial of its argument:
(defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1)))))This is an alternative function, which is more efficient in most Lisp systems because it uses tail recursion:
(defun factorial (n &optional (acc 1)) (if (<= n 1) acc (factorial (- n 1) (* acc n))))This function takes a list argument and evaluates to the reverse of the list. (Lisp actually has a built-in reverse function which does the same thing.)
(defun reverse (l &optional acc) (if (atom l) acc (reverse (cdr l) (cons (car l) acc))))
Object systems
Various object systems and models have been built on top of, alongside, or into Lisp, including:
CLOS features multiple inheritance, multiple dispatch ("multimethods"), and a powerful system of "method combinations". In fact, Common Lisp, which includes CLOS, was the first object-oriented language to be officially standardized.
- Flavors, built at MIT
- The Common Lisp Object System, CLOS (descended from Flavors)
Implementation
A Lisp system may be implemented using a SECD virtual machine.
Genealogy and Variants
Over its almost fifty-year history, Lisp has spawned many variations on the core theme of an S-expression language. Moreover, each given dialect may have several implementations -- for instance, there are more than a dozen implementations of Common Lisp.Differences between dialects may be quite significant -- for instance, Common Lisp and Scheme do not even use the same keyword to define functions! Within a dialect that is standardized, however, conformant implementations support the same core language, but with different extensions and libraries.
Note: The following list is a mix of dialects and implementations, and is not in chronological order!
- Lisp -- McCarthy's original version, developed at MIT.
- Common Lisp -- descended mainly from ZetaLISP and Franz, with some InterLISP input. Prevaling standard for industrial use today.
- MacLisp -- developed for MIT's Project MAC (no relation to Apple's Macintosh), direct descendant of LISP.
- ZetaLisp -- used on the Lisp machines, direct descendant of MACLisp.
- InterLisp -- developed at MIT, later adopted as a "west coast" Lisp for the Xerox Lisp machines. A small version called "InterLISP 65" was published for Atari's 6502-based computer line.
- Franz Lisp -- originally a Berkeley project; later run by Franz, Inc.
- Gold Hill Common Lisp -- an early PC implementation of Common Lisp.
- Coral Lisp -- an implementation of LISP for the Macintosh.
- Scheme -- a minimalist LISP originally designed for teaching; an early user of lexical variable scoping rather than dynamic scoping.
- AutoLISP/Visual LISP -- customization language for the AutoCAD product.
- Emacs Lisp -- scripting language for the Emacs editor.
- Oak Lisp -- an object-oriented Lisp based on Scheme.
- Cambridge Lisp -- originally implemented on IBM mainframes; published by Metacomco for the Amiga.
- the Knowledge Representation System
- Lispkit Lisp -- a purely functional ("pure Lisp") dialect implemented on a virtual machine (the SECD machine) and used as a testbed for experimentation with functional language concepts.
See also
- http://lisp.org -- Association of Lisp Users
- http://alu.cliki.net/ -- Association of Lisp Users Wiki, a general discussion of things Lispish
- http://www.cliki.net/ -- CLiki, a wiki about free software in Common Lisp.
- http://www.cons.org/ -- a collection of Lisp-related sites
- http://www.gnu.org/software/gcl -- a GNU cross-platform Common Lisp implementation
- Bill Schelter (LISP programmer)
- Kent Pitman (LISP programmer)
- an interactive LISP course
- Design patterns in Lisp
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Lisp programming language."
| The following table is compiled from various sources, across various languages. When English abbreviations or acronyms come from a non-English source, this is noted. | |||
| Entry | Source | Expression | Field |
LISP | Dutch | List Oriented Programming Language | Computing, Electrical Engineering |
LISP | English | List-oriented programming language | N/A |
Source: compiled by the editor, based on several corpora (additional references). | |||
Synonym: LispSynonym: list-processing language (n). (additional references) |
| Context | Synonyms within Context (source: adapted from Roget's Thesaurus). |
Stammering | Noun: inarticulateness; stammering; Verb: hesitation; Verb: impediment in one's speech; traulism; whisper; (faint sound); lisp, drawl, tardiloquence; nasal tone, nasal accent; twang; falsetto; (want of voice); broken voice, broken accents, broken sentences. |
Mumble, mutter; maud, mauder; whisper; mince, lisp; jabber, gibber; sputter, splutter; muffle, mump; drawl, mouth; croak; speak thick, speak through the nose; snuffle, clip one's words; murder the language, murder the King's English, murder the Queen's English; mispronounce, missay. | |
| Source: adapted from Roget's Thesaurus. | |
| Domain | Usage | |
Screenplays | Sounds like I have a lisp, doesn't it (On Golden Pond; writing credit: Ernest Thompson.) 'Flora' with a lisp. (She Spies; writing credit: Ron Osborn; Josh Appelbaum) | |
Movie/TV Titles | Hot Lisp Jasper (1945) | |
Source: compiled by the editor from various references; see credits. | ||
| Domain | Title | ||
Books |
| ||
Music |
| ||
Source: compiled by the editor from various references; see credits. | |||
| "Lisp" is generally used as a noun (singular) -- approximately 65.96% of the time. "Lisp" is used about 47 times out of a sample of 100 million words spoken or written in English. Its rank is based on over 700,000 words used in the English language. Some parts-of-speech are not covered due to the samples used by the British National Corpus. (note: percents less than one-hundredth of one percent have been omitted) |
| Parts of Speech | Percent | Usage per 100 Million Words | Rank in English |
| Noun (singular) | 65.96% | 31 | 62,296 |
| Lexical Verb (infinitive) | 14.89% | 7 | 133,076 |
| Lexical Verb (base form) | 8.51% | 4 | 175,879 |
| Noun (common) | 6.38% | 3 | 202,518 |
| Noun (proper) | 4.26% | 2 | 245,945 |
| Total | 100.00% | 47 | N/A |
Source: compiled by the editor from several corpora; see credits.
Expressions using "lisp": association of Lisp Users ♦ Austin Kyoto Common Lisp ♦ Avalon/Common LISP ♦ butterfly Common LISP ♦ Cambridge Lisp ♦ cmu Common Lisp ♦ common Lisp ♦ common LISP in Parallel ♦ common LISP Object System ♦ concurrent LISP ♦ connection Machine LISP ♦ conversational LISP ♦ Emacs Lisp ♦ embedded Lisp Interpreter ♦ experimental LISP ♦ Fools' Lisp ♦ Franz Lisp ♦ have a lisp ♦ Kyoto Common Lisp ♦ lisp 1 ♦ lisp 1.5 ♦ lisp 2 ♦ lisp A ♦ lisp compiler ♦ lisp Extended Algebraic Facility ♦ lisp Machine ♦ lisp Machine LISP ♦ Lisp Object Oriented Programming System ♦ lisp program ♦ Lispkit Lisp ♦ Macintosh Common Lisp ♦ mit Lisp Machine ♦ mock Lisp ♦ object Lisp ♦ Paralation LISP ♦ portable Standard Lisp ♦ pure Lisp ♦ spice Lisp ♦ standard Lisp ♦ symmetric LISP ♦ T Lisp. Additional references. | |
| Hyphenated Usage | |
Beginning with "lisp": Lisp-Linda, lisp-machine. | |
Ending with "lisp": Le-Lisp. | |
| Source: compiled by the editor from various references; see credits. | |
| The following statistics estimate the number of searches per day across the major English-language search engines as identified by various trade publications. Hyperlinks lead to commercial use of the expression at Amazon.com. |
| Expression | Frequency per Day | Expression | Frequency per Day |
lisp | 201 | lisp program | 6 |
auto cad lisp | 69 | acad lisp | 5 |
lisp rock | 53 | function lisp | 5 |
lisp rule | 53 | auto cad free lisp | 5 |
lisp suck | 53 | auto cad lisp program | 4 |
lisp routine | 26 | language lisp programming | 4 |
auto cad lisp routine | 20 | editor lisp | 4 |
lisp tutorial | 20 | interpreter lisp | 4 |
lisp visual | 19 | auto cad file lisp | 4 |
lisp speech | 11 | gear lisp | 4 |
common lisp | 10 | lateral lisp | 4 |
expert lisp system | 10 | code lisp | 4 |
compiling lisp visual | 10 | cad lisp | 3 |
lisp programming | 8 | emacs lisp | 3 |
free lisp | 8 | lisp speech therapy | 3 |
file lisp | 7 | auto cad inverse lisp matrix | 3 |
lisp compiler | 6 | auto lisp | 3 |
artificial inteligencia lisp | 6 | bathurst lisp | 3 |
auto cad lt lisp | 6 | esk lisp | 3 |
download lisp | 6 | lisp machine | 3 |
| Source: compiled by the editor from various references; see credits. | |||
| Language | Translations for "lisp"; alternative meanings/domain in parentheses. | |
Albanian | thuthuqësi, thuqëroj, flas si thuthuq, fëshfërimë (froufrou, murmur, whisper). (various references) | |
Arabic | لثغة, لثغ, لدغ (bite, biting, burr, nettle, pinch, sting, stinging, strike), تكلم بتلعثم. (various references) | |
Bulgarian | фъфля, фъфлене, шумолене (babble, murmur, rustle, swish, whisper), говоря неразбрано (chunter), бълбукане (guggle, gurgle, purl). (various references) | |
Chinese | '舌 (Lisped, Lisping). (various references) | |
Czech | šišlavost, šišlat. (various references) | |
Danish | LISP, læspen. (various references) | |
Dutch | lispelen. (various references) | |
Esperanto | lispi. (various references) | |
Faeroese | lespa. (various references) | |
Farsi | نوک زبانی صحبت کردن , شلی زبان , شل وسرزبانی تلفظکردن . (various references) | |
Finnish | LISP, sammaltaa, sammallus (lisping). (various references) | |
French | zézayer. (various references) | |
German | lispeln (whisper). (various references) | |
Greek | τραύλισμα (stammer, stammering, stutter, stuttering), ψεύδισμα, ψευδίζω (stammer). (various references) | |
Hebrew | לשפתת, על'ות (stammering, stuttering). (various references) | |
Hungarian | selypítés. (various references) | |
Italian | LISP, sigmatismo, pronunciare in modo bleso, parlare con pronuncia blesa, mormorio (breath, hum, murmur, murmuring, ripple, rustling), essere bleso, blesit . (various references) | |
Japanese Kanji | リストラ策 (Lisbon, listener, listening, listening room, restructuring scheme, rhythm, rhythmical). (various references) | |
Japanese Katakana | リスプ . (various references) | |
Manx | thittagh (hesitating, lisping), thit, loayrt dy thittagh (lisping, stammer, stammering, stutter), loayrt dy moandagh (fumble, stammering, stutter). (various references) | |
Norwegian | lespe. (various references) | |
Pig Latin | isplay.(various references) | |
Portuguese | balbuciação (babble, babbling, mumble, mumbling, mutter, muttering, prattle, stammer, stammering, stutter, stuttering). (various references) | |
Romanian | sâsâit (hiss, hissing, lisping), sâsâialã, sâsâi (hiss), rosti sâsâit, gângãvi (stammer, stutter), gângãvealã (stammering), freamãt (bustle, commotion, hum, murmur, quiver, riot, rioting, riotousness, roaring, rush, rustle, rustling, sough, stir, storm, thrill, tremor, tumult, uproar, vibration, whir), foşnet (murmur, rustle, sough, swish), bâlbâialã (babble, fluff, impediment, stammering). (various references) | |
Russian | сюсюкать, шепелявость, шепелявить лисп, шепелявить, лепет (babblement). (various references) | |
Serbo-Croatian | vrskati, šuškati (rustle, sibilate), šuškanje (rustle). (various references) | |
Spanish | ceceo. (various references) | |
Swedish | läspning, läspa. (various references) | |
Thai | พู"ไม่ชั" (เหมือนเ"็ก). (various references) | |
Turkish | yanlış telaffuz (mispronunciation), telaffuz edememek, peltek konuşmak, peltek konuşma. (various references) | |
Ukrainian | шелест (rustle, susurration, whisper), шепіт (breath, susurration, whisper, whispering), шепелявість (balbuties), шепелявити, лепетати (babble, chipper, prattle). (various references) | |
Welsh | bloesgi (falter, speak indistinctly). (various references) | |
| Source: compiled by the editor from various translation references. | ||
Derivations | |
Words beginning with "lisp": lisped, lisper, lispers, lisping, lisps. (additional references) | |
| |
"Lisp" is suggested in spellcheckers for the following: Clispa, ilso, isp, ispbx, ispo, jlsig, lcis, lewp, Liepa, liesl, liis, liisa, lijs, lirp, lis, lisa, lisc, lish, lisi, lisk, lism, lisn, liso, lispy, lisq, lissy, Lisu, lixs, liz, lizi, lizo, lizu, lsi, lysa, Lysg, lysh. (additional references) | |
| Source: compiled by the editor, based on several corpora (additional references). | |
| # of Phoneme Matches | Pronunciation | Word(s) rhyming with "lisp" (pronounced li"sp) |
| 3 | -i" s p | crisp, wisp. |
Source: compiled by the editor (additional references); see credits. | ||
Scrabble® Enable2K-Verified Anagrams | |
Direct Anagrams: lips, slip. | |
| Words within the letters "i-l-p-s" | |
-1 letter: lip, lis, pis, psi, sip. | |
-2 letters: is, li, pi, si. | |
| Words containing the letters "i-l-p-s" | |
+1 letter: blips, clips, flips, lapis, limps, lisps, pails, piles, pilis, pills, pilus, plies, polis, pulis, slipe, slips, slipt, spail, speil, spiel, spile, spill, spilt, split, spoil. | |
+2 letters: blimps, dispel, espial, impels, lapins, limpas, limpsy, lipase, lipids, lipins, lisped, lisper, lupins, milpas, oxlips, palais, palish, pastil, pelvis, pensil, perils, phials, pibals, piculs, pilafs, pilaus, pilaws, pileus, pilose, pilots, pilous, pipals, pistil, pistol, pixels, plaids, plains, plaits, pliers, plinks, plisky, plisse, poilus, poleis, polies, polios, polish, prills, pupils, salpid, simple, simply, sliped, slipes, slippy, slipup, spails, speils, spiels, spiled, spiles, spills, spilth, spinal, spinel, spiral, spital, splice, spliff, spline, splint, splits, spoils, spoilt, stipel, swiple, tulips. | |
| Source: compiled by the editor from various references; see credits. SCRABBLE® is a registered trademark. All intellectual property rights in and to the game are owned in the U.S.A and Canada by Hasbro Inc., and throughout the rest of the world by J.W. Spear & Sons Limited of Maidenhead, Berkshire, England, a subsidiary of Mattel Inc. Mattel and Spear are not affiliated with Hasbro. | |
| 1. Definition 2. Synonyms 3. Crosswords 4. Usage: Modern | 5. Usage: Commercial 6. Usage Frequency 7. Expressions 8. Expressions: Internet | 9. Translations: Modern 10. Abbreviations 11. Acronyms 12. Derivations | 13. Rhymes 14. Anagrams 15. Bibliography |
Copyright © Philip M. Parker, INSEAD. Terms of Use.