Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

Common Lisp

Z Wikipedie, otevřené encyklopedie

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.).

Proměnné

[editovat |editovat zdroj]

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.)

Typy

[editovat |editovat zdroj]
Podrobnější informace naleznete v článku Datový typ.

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.

  • t – Je základním typem, veškeré typy jsou subtypem tohoto typu
  • nil – Reprezentuje nepravdu nebo prázdný seznam. Je subtypem všech ostatních typů, žádný objekt nemůže být typunil.
  • null- Reprezentuje prázdný seznam – je subtypem seznamu, a reprezentuje prázdný seznam zapsatelný jako:
    ()
  • symbol – Symboly představují jméno např. hodnoty nebo funkce. Jeden symbol může být současně jménem více takovýchto entit. Symboly mají jména jimiž sezobrazují. Jméno symbolu je běžně libovolná posloupnost znaků, nevypadající jako číslo, neobsahující ':' nebo neskládající se z teček. Symboly mohou být sdružovány vpackages.
  • function – Je datový typ – elementem jazyka. To kromě jiného znamená, že ji lze např. předávat jiným funkcím jako argument nebo vracet jako výsledek jiných funkcí.
  • boolean – Je subtyp symbolu, a sestává z dvou hodnot –t anil reprezentujících true a false. Obecně platí, že cokoliv, co nenínil jetrue.
  • character- Nebolipísmeno, představuje jedentisknutelný znak.

Numerické typy

[editovat |editovat zdroj]
  • real – Je subtyp odnumber; Představujereálná čísla, některá však vCL nemusí být vyjádřitelná přesně (např.iracionální čísla). Pouze čísla typureal mohou býtuspořádána pomocí funkcí <, > , <= , a >=.
  • complex – Je subtyp odnumber; Pomocí complex lze zapsatkomplexní číslo vkartézských souřadnicích, nebo jakýkoliv předcházející číselný typ. Číslo lze přímo zadat pomocímakrocharakteru #C. např.:
    #C(reálná_částimaginární_část)
  • rational – Je subtyp odreal; Používá se proracionální čísla. Pokud se jedná očíslo celé je vnitřně uloženo pomocí typuinteger, jinak pomocí typuratio.Ratio se skládá z dvou nenulovýchintegerů,čitatele ajmenovatele, jejichžnejvětší společný dělitel je 1 a jmenovatel je navíc kladný a větší než 1.
  • float – Je subtyp odreal; Jedná se o obecný datový typ čísla s plovoucí řádovou čárkou.
  • integer – Je subtyp odrational; Celočíselný datový typ. Obecně libovolné velikosti.

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]])

Jiné typy

[editovat |editovat zdroj]

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.

Datové struktury

[editovat |editovat zdroj]

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:

  • řetězec – vektor znaků
  • bit-vektor – vektor bitů

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.

Funkce

[editovat |editovat zdroj]

Definice funkcí

[editovat |editovat zdroj]

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)

Definice generické funkce a metody

[editovat |editovat zdroj]

Metody se definují pomocí makradefmethod.

(defmethodnázevmetody(tělometody))

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

(defgenericnázevfunkce(tělofunkce))
Programovací jazyky
abecední seznam programovacích jazyků
multiparadigmatické

AdaC++Common LispDF#GoOberonPerlPHPPythonRakuRubyRustScalaSwiftTcl (Tk) •Vala

strukturované (procedurální)

AWKCCOBOLDCLForthFortranLuaModula-2 /Modula-3PascalPawnPL/SQL

objektové
funkcionální
dotazovací

LINQSPARQLSQLXQueryXSL (XSLTXSL-FOXPath)

logické
výukové
ezoterické
historické

ALGOLAPLBBASICCPL (BCPL) •JMUMPSPL/ISimula 67SNOBOL

další
skriptovací/strojový kódkompilované/interpretovanéinteraktivní/dávkovéWYSIWYG

Externí odkazy

[editovat |editovat zdroj]
  • Obrázky, zvuky či videa k tématuCommon Lisp na Wikimedia Commons
Autoritní dataEditovat na Wikidatech
Citováno z „https://cs.wikipedia.org/w/index.php?title=Common_Lisp&oldid=25582530
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp