Lisp: Forskelle mellem versioner
Content deleted Content added
Fjerner version 3446116 af Henrykwdk (diskussion). Begrundelse: rettelsen var ikke færdig. |
Udbygning og omformulering + smårettelser |
||
Linje 1:
'''Lisp''', eller '''LISP''' (forkortelse for LISt Processing) er et [[dynamisk typet]] [[funktionsorienteret]] [[programmeringssprog]]
Sproget er baseret på en matematisk teori - [[Alonzo Church]]'s [[lambda calculus]] fra 1936. Det blev opfundet af [[John McCarthy]] i 1958. Beskrivelsen blev publiceret i 1960 og sproget blev for første gang implementeret af Steve Russell i 1961. Dermed er LISP et af de ældste højniveau-[[programmeringssprog]]; blandt de nulevende og stadigvæk mest udbredte er det kun [[Fortran]] der er ældre.
LISP har væsentlig betydning inden for [[kunstig intelligens]] og er velegnet til [[metaprogrammering]], sidstnævnte ikke mindst i kraft af et Lisps kendemærker: programmer og data har grundlæggende samme repræsentation; derved er det naturligt at lade programmer generere og transformere andre programmer.
virkningen af udførelsen af funktionskaldet kan afhænge meget af kaldets kontekst. Ligesom et ord's betydning ([[semantik]]) i almindeligt sprog ofte afhænger af i hvilken sætning ( kontekst ) det nævnes.▼
Både data og programmer repræsenteres i LISP i form af [[liste]]r. En liste består af en samling elementer, som hver især enten kan være et [[atom]] - en simpel værdi eller et symbol - eller en liste. En liste er altså en rekursiv størrelse. Derfor defineres funktioner tit også rekursivt: man splitter en liste op i et hoved, som er det første element, og en hale, som udgøres af resten af listen. Halen består så af et hoved og en hale, osv.; i et grænsetilfalde er halen tom. Operationerne til at plukke hovedet hhvs. halen af en liste er blandt de grundlæggende operationer i LISP.
LISPs lister kan bruges til at repræsentere andre abstrakte datastrukturer. Fx kan et [[træ]] repræsenteres af en liste af lister.
I den oprindelige LISP eksisterer lagerbegrebet ikke, dvs. man opererer ikke med variabler, og funktionskald har ingen bivirkninger; en funktion definerer en ren transformation af input, som er en parameterliste, til en outputværdi, som også er en liste.
Moderne LISP-dialekter tillader et vist mål af bivirkninger. Nogle af dialekterne indfører også andre [[programmeringsparadigme]]r end det funktionsorienterede - fx det objektorienterede.
▲Når en LISP-funktion kaldes vil den ofte få en [[parameter]] med der indeholder oplysninger om den [[kontekst]] hvori kaldet fandt sted; dvs. virkningen af udførelsen af funktionskaldet kan afhænge meget af kaldets kontekst
[[Kategori:Programmeringssprog]]
|