'''Common Lisp''' je v [[Informatika (počítačová věda)|informatice]] rozšířením funkcionálního [[programovací jazyk|programovacího jazyku]] [[Lisp]] ([[List processing]] - zpracování odkazů), který je zveřejněn v [[ANSI]] (American National Standards Institute). Common Lisp by vyvinut kvůli sjednocení odlišných variant Lispu. Jedná se o jazyk, který využívá procedurální, funkční a objektově-orientované programovací paradigmata. Obsahuje sadu nástrojů pro [[objektově orientované programování]]. Další rozšiřující dialekty jsou s Common Lisp kompatibilní ([[cmlisp]], [[elisp]], [[autolisp]] atd.).
Jedná se o jazyk, který využívá procedurální, funkční a objektově-orientované programovací paradigmata. Obsahuje sadu nástrojů pro [[objektově orientované programování]]. Další rozšiřující dialekty jsou s Common Lisp kompatibilní ([[cmlisp]], [[elisp]], [[autolisp]] atd.).
== Proměnné ==
K nastavení proměnných slouží příkaz ''setq''. Lokální proměnné se nastavují příkazem ''let''.
* (setq a 1) -– nastaví proměnnou a na hodnotu 1
* (let ((b 8)) b) -– dočasné nastavení proměnné b na hodnotu 8
== Typy ==
Používají se zde běžné [[aritmetické operace]] (+, -−, /, *, exp, sqrp, sin atd.)
;[[integer]]: Musí obsahovat znaménko (+ nebo -–), nesmí se zde nacházet (.). Výhodou integeru je že může být libovolně dlouhý. ▼
* [[integer]]
;[[real]]: Platí zde stejné pravidla jako u typu integer s rozdílem, že real musí obsahovat znak (.). ▼
▲Musí obsahovat znaménko (+ nebo -), nesmí se zde nacházet (.). Výhodou integeru je že může být libovolně dlouhý.
;[[rational]]: Používá se pro zlomky. Operace dvou čísel typu integer mezi nimiž je znak (/). ▼
* [[real]]
;[[complex]]: Pomocí complex lze zapsat jakýkoliv předcházející typ (#c(číselná hodnota)). ▼
▲Platí zde stejné pravidla jako u typu integer s rozdílem, že real musí obsahovat znak (.).
* [[rational]]
▲Používá se pro zlomky. Operace dvou čísel typu integer mezi nimiž je znak (/).
* [[complex]]
▲Pomocí complex lze zapsat jakýkoliv předcházející typ (#c(číselná hodnota)).
== Jiné typy ==
'''Cesty''' představují [[soubor]]y a [[adresář]]e v souborovém systému.
'''Vstupní a výstupní toky''' představují zdroj [[binární]]ch a textových dat.
'''PRNG''' je pseudo-generátor náhodných čísle, který je vestavění v Common Lisp. Náhodný objekt představuje jedno použití zdroje [[generátor náhodných čísle|generátoru náhodných čísel]].
'''Podmínky''' představují chyby, [[vyjímka|vyjímky]] a jiné události na které [[program]] reaguje.
== Datové struktury ==
'''Seznamy''' jsou u téměř všech ostatních dialektů Lispu ve složení conses. Tato datová struktura obsahuje dva [[slot]]y ''car'', ''cdr'' (podle "contents of address register" a "contents of decrement register").
* (cons 3 1) - vytvoří cons a nastaví car na 3 a cdr na 1.
'''[[Pole (datová struktura)|Pole]]''' je číselný typ. Vytváří se pomocí [[funkce]] ''make-array''. Pomocí funkce ''aref'' se do něho přistupuje. Je zde i podpora vícerozměrných polí, které lze využít pro [[matice]] při matematických operacích. Velikost pole lze dynamicky měnit v případě potřeby. Jednorozměrné pole je [[vektor]]. Jednotlivé prvky pole mohou být jakékoliv typu (i smíšené typy v jednom poli). Dva typy polí dle obsahu:
* [[řetězec]] -– vektor znaků
* [[bit-vektor]] -– vektor bitů
Příklad vytvoření pole:
* (make-array '(2 2)) -– dvourozměrné pole (2x2).
* (make-array 4) -– jednorozměrné pole (4 prvky)
'''Hash tabulky''' ukládají [[data]] spolu s jejich [[asociace]]mi. 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í [[program]]u. Samotný balíček může [[export]]ovat některé symboly jako součást [[rozhraní]]. 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í jednoduchou [[dě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]].
== Funkce ==
|