Lisp: Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
VMwiki (diskuse | příspěvky)
Visual LISP
mala redujce 1. osoby
Řádek 1: Řádek 1:
'''Lisp''' je [[funkcionální programování|funkcionální]] [[programovací jazyk]] s dlouhou historií. Jeho název je zkratka pro '''''Lis'''t '''p'''rocessing'' (''zpracování seznamů''). Dnes se stále používá v oboru [[umělá inteligence]].
'''Lisp''' je [[funkcionální programování|funkcionální]] [[programovací jazyk]] s dlouhou historií. Jeho název je zkratka pro '''''Lis'''t '''p'''rocessing'' (''zpracování seznamů''). Stále se používá v oboru [[umělá inteligence]]. Používá ho tak0 například [[textový editor]] [[Emacs]] či konstrukční program [[AutoCAD]].


Nic ale nebrání ho použít i pro jiné účely. Používá ho například [[textový editor]] [[Emacs]] či konstrukční program [[AutoCAD]].
Z lispu jsou odvozeny i další jazyky - například [[Tcl]], [[Smalltalk]] nebo [[Scheme]].

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


==Syntaxe==
==Syntaxe==


Nejzákladnějším zápisem v Lispu je seznam. Zapisujeme ho jako:
Základním zápisem v Lispu je seznam. Zaoisuje se tímto způsobem:
<source lang="lisp">
<source lang="lisp">
(1 2 "ahoj" 13.2)
(1 2 "ahoj" 13.2)
Řádek 18: Řádek 16:
* reálné číslo 13,2
* reálné číslo 13,2


Jde tedy o uspořádanou čtveřici. Všimněte si, že závorky nefungují tak jako v [[matematika|matematice]], ale pouze označují začátek a konec seznamu.
Zeznam v příkladu reprezentuje uspořádanou čtveřici. Závorky v jazyce Lisp nefungují tak jako v [[matematika|matematice]], ale pouze označují začátek a konec seznamu.


Seznamy jsou v Lispu implementovány jako [[binární strom]] degenerovaný na [[jednosměrně vázaný seznam]].
Seznamy jsou v Lispu implementovány jako [[binární strom]] degenerovaný na [[jednosměrně vázaný seznam]].
Řádek 26: Řádek 24:
===Příkazy===
===Příkazy===


Příkazy píšeme také jako seznam, první prvek seznamu je však název příkazu.
Příkazy jazyka Lisp se zapisují také jako seznam, jehož první prvek seznamu je název příkazu.


Například sčítání provádíme příkazem '''+''', což interpreteru zadáme takto:
Například sčítání je realizováno příkazem '''+'''. Odpovídající konstrukce v jazyce vypadá takto:
<source lang="lisp">
<source lang="lisp">
(+ 1 2 3)
(+ 1 2 3)

Verze z 20. 6. 2008, 08:14

Lisp je funkcionální programovací jazyk s dlouhou historií. Jeho název je zkratka pro List processing (zpracování seznamů). Stále se používá v oboru umělá inteligence. Používá ho tak0 například textový editor Emacs či konstrukční program AutoCAD.

Z lispu jsou odvozeny i další jazyky - například Tcl, Smalltalk nebo Scheme.

Syntaxe

Základním zápisem v Lispu je seznam. Zaoisuje se tímto způsobem:

(1 2 "ahoj" 13.2)

Tento seznam obsahuje čtyři prvky:

  • celé číslo 1
  • celé číslo 2
  • řetězec znaků „ahoj“
  • reálné číslo 13,2

Zeznam v příkladu reprezentuje uspořádanou čtveřici. Závorky v jazyce Lisp 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ě vázaný seznam.

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

Příkazy

Příkazy jazyka Lisp se zapisují také jako seznam, jehož první prvek seznamu je název příkazu.

Například sčítání je realizováno příkazem +. Odpovídající konstrukce v jazyce vypadá takto:

(+ 1 2 3)

Interpretr odpoví 6.

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 (zerop n)
    1
    (* n (fact (1- n)))))

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.

Externí odkazy