The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

Common Lisp

Z Multimediaexpo.cz

Common Lisp je v informatice rozšířením funkcionálního programovacího jazyku Lisp, 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.).

Obsah

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ý.
real
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í soubory 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átoru náhodných čísel.

Podmínky představují chyby, 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 sloty 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 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:

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 asociacemi. 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ůže exportovat 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

Definice funkcí

Common Lisp podporuje funkce první třídy. Definice funkcí pomocí makra defun. V definici je uveden název funkce, všechny argumenty funkce a tělo funkce.

  • (defun název funkce (tělo funkce))

Místní funkce mohou být definovány pomocí příkazů flet a labels.

  • (Flet název funkce (tělo funkce))

Definice generické funkce a metody

Metody se definují pomocí makra defmethod.

  • (Defmethod název metody (tělo metody))

Generické funkce jsou kolekcí metod. Tyto funkce se definují pomocí makra defgeneric.

  • (Defgeneric název funkce (tělo funkce))