b"\n_START_ARTICLE_\nLisp\n_START_PARAGRAPH_\nLisp, eller LISP (forkortelse for LISt Processing) er et dynamisk typet, funktionsorienteret programmeringssprog.\n_START_SECTION_\nOprindelse\n_START_PARAGRAPH_\nSproget er baseret p\xc3\xa5 en matematisk teori \xe2\x80\x93 Alonzo Church's lambdakalkyle ( lambda calculus) fra 1936. Det blev specificeret af John McCarthy i 1958. Beskrivelsen blev publiceret i 1960 og sproget blev for f\xc3\xb8rste gang implementeret af Steve Russell i 1961. Dermed er LISP et af de \xc3\xa6ldste h\xc3\xb8jniveau-programmeringssprog; blandt de nulevende og stadigv\xc3\xa6k mest udbredte er det kun Fortran der er \xc3\xa6ldre.\n_START_SECTION_\nAnvendelse\n_START_PARAGRAPH_\nLisp har v\xc3\xa6sentlig betydning inden for kunstig intelligens og er velegnet til metaprogrammering \xe2\x80\x93 sidstn\xc3\xa6vnte ikke mindst i kraft af et af Lisps kendem\xc3\xa6rker: programmer og data har samme repr\xc3\xa6sentation; derved er det naturligt at lade programmer generere og transformere andre programmer.\n_START_SECTION_\nProgram- og datarepr\xc3\xa6sentation\n_START_PARAGRAPH_\nB\xc3\xa5de data og programmer repr\xc3\xa6senteres i Lisp i form af lister. En liste best\xc3\xa5r af en samling elementer, som hver is\xc3\xa6r enten kan v\xc3\xa6re et atom \xe2\x80\x93 en simpel v\xc3\xa6rdi eller et symbol \xe2\x80\x93 eller en liste. En liste er alts\xc3\xa5 en rekursiv st\xc3\xb8rrelse. Derfor er det naturligt ogs\xc3\xa5 at definere funktioner rekursivt ved at definere behandlingen af listens hoved, som er det f\xc3\xb8rste element, s\xc3\xa5 af dens hale, som udg\xc3\xb8res af resten af listen. Halen best\xc3\xa5r s\xc3\xa5 af et hoved og en hale, osv.; i gr\xc3\xa6nsetilfaldet er halen tom, hvilket normalt bruges som stopkriteriet for rekursionen. Operationerne til at plukke hovedet hhvs. halen af en liste er blandt de grundl\xc3\xa6ggende operationer i LISP._NEWLINE_LISPs lister kan bruges til at repr\xc3\xa6sentere andre abstrakte datastrukturer. Fx kan et tr\xc3\xa6 repr\xc3\xa6senteres af en liste af lister._NEWLINE_I den oprindelige LISP eksisterer arbejdslagerbegrebet ikke, dvs. man opererer ikke med variabler, og funktionskald kan derfor ikke have bivirkninger; en funktion definerer en ren transformation af input, som er en parameterliste, til en outputv\xc3\xa6rdi, som ogs\xc3\xa5 er en liste.\n_START_SECTION_\nModerne udvidelser\n_START_PARAGRAPH_\nModerne LISP-dialekter tillader et vist m\xc3\xa5l af bivirkninger, fx i forbindelse med udskrivning, filoperationer og operativsystemkald. Nogle af dialekterne underst\xc3\xb8tter ogs\xc3\xa5 andre programmeringsparadigmer end det funktionsorienterede \xe2\x80\x93 fx det objektorienterede.\n_START_SECTION_\nKontekstbaserede funktionskald\n_START_PARAGRAPH_\nN\xc3\xa5r en LISP-funktion kaldes vil den ofte f\xc3\xa5 en parameter med der indeholder oplysninger om den kontekst hvori kaldet fandt sted; dvs. virkningen af udf\xc3\xb8relsen af funktionskaldet kan afh\xc3\xa6nge meget af kaldets kontekst, ligesom et ords betydning (semantik) i et almindeligt, eller naturligt sprog ofte afh\xc3\xa6nger af i hvilken s\xc3\xa6tning (eller, generelt, sammenh\xc3\xa6ng) det n\xc3\xa6vnes._NEWLINE_Denne egenskab kaldes ogs\xc3\xa5 closure."