Common Lisp
Common Lisp, oftest forkortet CL, er en dialekt af programmeringssproget Lisp, udgivet i ANSI-standarddokument ANSI INCITS 226-1994 (R2004), (tidligere X3.226-1994 (R1999)). Common Lisp HyperSpec er blevet udledt fra ANSI Common Lisp-standarden til brug for webbrowsere. Common Lisp blev udviklet til at standardisere de divergerende varianter af Lisp (selv om det hovedsagligt var MacLisp-varianterne) der var forud for det, og således er det ikke en implementering, men snarere en sprogspecifikation. Adskillige implementering af Common Lisp-standarden er tilgængelige, herunder fri og open source software og proprietære produkter.
Common Lisp er et generelt anvendeligt, multiparadigme programmingssprog. Det understøtter en kombination af procedurale, funktionelle og objektorienterede programmeringsparadigmer. Som et dynamisk programmeringssprog tilbyder det en evolutionær og inkrementel programudvikling, med en iterativ kompilation til programmer, der er effektive i kørselstid. Common Lisp inkluderer CLOS, et objektsystem som understøtter multimetoder og metodekombinationer. Det er udvideligt gennem standardegenskaber, så som Lispmakroer (rearrangering af kode ved kompileringstid opnås gennem programmet selv), og læser makroer (udvidelse af syntaks for at give speciel betydning til tegn som er reserveret for brugere til dette formål).
Syntaks
[redigér | rediger kildetekst]Common Lisp er en dialekt af Lisp; det gør brug af S-udtryk til at denotere både kode og datastruktur. Funktions- og makrokald skrives som lister, med navnet på funktionen først, som i disse eksempler:
( 2 2) ; adderer 2 og 2, giver 4.
(defvar *x*) ; Sikrer at en variabel *x* eksisterer, uden at give den en
; værdi. Asterisker (stjernetegn) er del af navnet. Symbolet
; *x* er også hermed tildelt med den egenskab at efterfølgende
; bindinger til den er dynamiske, snarere end leksikalske.
(setf *x* 42.1) ; sætter variablen *x* til flydepunktværdi 42.1
;; Definerer en funktion som giver kvadratet af et tal:
(defun kvadrat (x)
(* x x))
;; Udfører funktionen:
(kvadrat 3) ; Returnerer 9
;; 'let'-konstruktionen skaber et scope til lokale variabler. Her bindes
;; variablen 'a' til 6 og variablen 'b' bindes til 4. Inde i 'let' er et
;; 'beholder', hvor den sidst beregnede værdi returneres til. Her bliver
;; resultatet af at addere a og b returneret fra 'let'-udtrykket.
;; Variablerne a og b har leksikalske scope, medmindre symbolerne er blevet
;; markeret som specielle variabler (for eksempel med et foregående DEFVAR).
(let ((a 6)
(b 4))
( a b)) ; returnerer 10
Datatyper
[redigér | rediger kildetekst]Common Lisp har mange datatyper—flere end mange andre sprog.