Common Lisp je vinformatice rozšíření funkcionálníhoprogramovacího jazykaLisp, který je zveřejněn vANSI (American National Standards Institute). Common Lisp byl vyvinut kvůli sjednocení odlišných variant Lispu. Jedná se o jazyk, který využívá procedurální, funkcionální a objektově-orientované programovací paradigmata. Obsahuje sadu nástrojů proobjektově orientované programování. Další rozšiřující dialekty jsou s Common Lisp kompatibilní (cmlisp, elisp, autolisp atd.).
K nastavení proměnných slouží příkazsetq.
(setqa1)
nastaví vazbu symbolu a na hodnotu 1.Lokální proměnné se nastavují příkazemlet.
(let((b8))b)
vytvoří lokální prostředí a v něm nastaví vazbu symbolu b na 8. Poté vrátí hodnotu symbolu b. (Což je v daném prostředí 8.)
Common Lisp obsahuje mnoho datových typů, které jsou vzájemně uspořádány do stromové struktury.
Ke každému netriviálnímu datovému typu existuje většinou stejnojmenná funkce pro vytvoření prvku daného typu, nebo lze daný prvek (např. číslo) rovnou zapsat v podobě čitelnéreaderem.
()#C(reálná_částimaginární_část)
Existují další numerické typy jako bit či unsigned-byte a lehce lze vytvářet v případě potřeby (např. pro omezení obsahu slotů tříd) další pomocí konstrukcí(<numetický_datový_typ> [horní_limit [dolní_limit]])
Cesty představujísoubory aadresáře v souborovém systému.
Vstupní a výstupní toky představují zdrojbinárních a textových dat.
PRNG je pseudo-generátor náhodných čísel, který je vestavěn v Common Lisp. Náhodný objekt představuje jedno použití zdroje generátoru náhodných čísel.
Podmínky představují chyby,výjimky a jiné události na kteréprogram reaguje.
Seznamy jsou u téměř všech ostatních dialektů Lispu ve složení conses. Tato datová struktura obsahuje dva slotycar,cdr (podle "contents of address register" a "contents of decrement register").
(cons31); vytvoří cons a nastaví car na 3 a cdr na 1
Pole je číselný typ. Vytváří se pomocífunkcemake-array. Pomocí funkcearef se do něho přistupuje. Je zde i podpora vícerozměrných polí, které lze využít promatice při matematických operacích. Velikost pole lze dynamicky měnit v případě potřeby. Jednorozměrné pole jevektor. Jednotlivé prvky pole mohou být jakékoliv typu (i smíšené typy v jednom poli). Dva typy polí dle obsahu:
Příklady vytvoření pole:
(make-array4); jednorozměrné pole (4 prvky)(make-array'(22)); dvourozměrné pole (2x2)
Hash tabulky ukládajídata spolu s jejichasociacemi. Každýobjekt v hash tabulce má svůj klíč (key) a k němu příslušnou hodnotu (value).
Balíčky jsou symboly, které se užívají k oddělení jednotlivých částíprogramu. Samotný balíček můžeexportovat některé symboly jako součástrozhraní. Balíček může sám užívat i jiné balíčky.
Struktury představují libovolné komplexní datové struktury s libovolným počtem a typem polí (nazývají se sloty). Struktury umožňují jednoduchoudědičnost.
Třídy jsou podobné jako struktury. Nabízejí více dynamických vlastností a vícenásobnou dědičnost. Třídy byly do Common Lisp přidány až později. Objekty vytvořené třídy se nazývajíinstance.
Common Lisp podporujefunkce první třídy. Definice funkcí pomocímakradefun. V definici je uveden název funkce, všechny argumenty funkce a tělo funkce.
(defunnázev_funkce(argumenty)tělo_funkce)
Místní funkce mohou být definovány pomocí příkazůflet alabels.
(fletnázev_funkce(argumenty)tělo_funkce)
Metody se definují pomocí makradefmethod.
(defmethodnázevmetody(tělometody))
Generické funkce jsou kolekcímetod. Tyto funkce se definují pomocí makradefgeneric.
(defgenericnázevfunkce(tělofunkce))