Lisp

Z Wikipedie, otevřené encyklopedie

Lisp je funkcionální programovací jazyk s dlouhou historií. Jeho název je zkratka pro List processing (zpracování seznamů). Dnes se stále používá v oboru umělá inteligence.

Nic ale nebrání ho použít i pro jiné účely. Používá ho například textový editor Emacs či konstrukční program AutoCAD.

Další jazyky od něj odvozené jsou například Tcl, Smalltalk nebo Scheme.

Obsah

[editovat] Syntaxe

Nejzákladnějším zápisem v Lispu je seznam. Zapisujeme ho jako:

(1 2 "ahoj" 13.2)

Tento seznam obsahuje čtyři prvky:

  • celé číslo 1
  • celé číslo 2
  • text „ahoj“
  • reálné číslo 13,2

Jde tedy o uspořádanou čtveřici. Všimněte si, že závorky nefungují tak jako v matematice, ale pouze označují začátek a konec seznamu.

Seznamy jsou v Lispu implementovány jako binární strom degenerovaný na jednosměrně zřetězený seznam.

Co se seznamem Lisp udělá, záleží na okolnostech.

[editovat] Příkazy

Příkazy píšeme také jako seznam, první prvek seznamu je však název příkazu.

Například sčítání provádíme příkazem +, což interpreteru zadáme takto:

(+ 1 2 3)

Interpretr odpoví 6.

[editovat] Ukázka kódu

Program hello world lze zapsat několika způsoby. Nejjednoduší vypadá takto:

(format t "Hello, World!")

Funkce se v Lispu definují pomocí klíčového slova defun:

(defun hello ()
  (format t „Hello, World!“))
(hello)

Na prvních dvou řádcích je definice funkce hello, na třetím řádku je tato funkce svým jménem zavolána.

Funkcím lze předávat i argumenty. V následujícím příkladu je ukázka funkce fact, která vypočítá faktoriál zadaného čísla:

(defun fact (n)
  (if (= n 0)
    1
    (* n (fact (- n 1)))))

Pro výpočet faktoriálu čísla 6 předáme tuto hodnotu jako argument funkci fact:

(fact 6)

Návratovou hodnotou funkce bude hodnota 720.

[editovat] Externí odkazy


Programovací jazyky

ABAP | Ada | AWK | Assembler | C | C++ | C# | COBOL | ColdFusion | Clean | D | Eiffel | Erlang | Flex | Fortran | JADE | Java | JavaScript | Lisp | Lua | Oberon | Object Pascal | Objective-C | Pascal | Perl | PHP | Python | REALbasic | REBOL | RPG | Ruby | SQL / PL/SQL | Tcl / Tcl/Tk | Visual Basic / VBScript | VB.NET | Visual FoxPro

Akademické: APL / J | Baltazar | Baltík | Karel | OCaml | Haskell | Scheme | Smalltalk | Logo | MATLAB | Mathematica | ML | Prolog

Ostatní: ALGOL | BASIC | Clipper | Forth | Goedel | Limbo | Miranda | Modula-2 / Modula-3 | MUMPS | PL/1 | Simula 67 | Whitespace