Lisp (programlingvo): Malsamoj inter versioj

[nekontrolita versio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
Idioma-bot (diskuto | kontribuoj)
e roboto aldono de: hr:Lisp (programski jezik)
reverkita
Linio 1:
[[Komputiko]] > [[Programlingvo]] > LISP
----
LISP (mallongigo por '''LISLISP'''ta (mallongigo de angla '''PLISt Processing'''rocezado = procezado de listoj) estas [[programlingvo]] inventita de [[John McCarthy]] jeen [[1958]] ĉe [[MIT]], komence ĵusnur kiel matematika notacio, sed poste enkarnigita kiel komputillingvokomputila delingvo siajde studentoj. Ofte, sed ne ekskluzive, ĝi estas [[interpretita lingvo]]. LispLispo estas plej ofte konata kiel la lingvo de [[artefarita intelekto]]. LISPLispo estas [[funkciaj lingvoj|funkcia lingvo]]. Lispo ĉefe estas dediĉita por procezi [[simbolo]]jn. [[Common Lisp]] estas populara dialekto de LISP.
 
LISPLispo ankaŭ estas la lingvo por konfiguri [[Emakso|Emakson]]n kaj [[AutoCad]]-on. Fakte, unu artikolo diris lastatempe ke nuntempe la plej ofta uzo de Lispo estas skribi [[etendaĵo]]jn por tiuj iloj.
[[AutoCad|AutoCad-on]]. Fakte, unu artikolo diris lastatempe ke la plej ofta uzo de Lisp nuntempe estas por skribi etendaĵojn por tiuj iloj.
 
== Atomoj kaj listoj ==
LISP ne havas multe da sintakso. Ordonoj en ĝi havas la formon:
Lispo estas esprimo-orientita lingvo. En ĝi ĉio estas esprimoj - kaj datumoj kaj ordonoj (funkcioj).
Ĉefaj datumoj estas '''atomoj''' - [[nombro]]j, [[konstanto]]j, [[literĉeno]]j, kaj '''listoj''' (finhava vico de esprimoj - atomoj kaj/aŭ aliaj listoj, metita en rondajn krampojn). Ekzemple: <code>(abc 123 "eĥoŝanĝo" (ĉiuĵaŭde))</code> - listo el kvar elementoj, la kvara estas ankaŭ listo.
 
Ĉiu celo de listoj en lispo (nomata ''cons'') estas paro de kapo kaj vosto. La kapo estas la unua elemento de la listo (t.n. ''car''), kaj vosto - estas resto de la listo (t.n. ''cdr''). En la [[punkto-notacio]] tio skribatas: <code>(kapo . vosto)</code>. La supra listo en la punkto-notacio aspektas jene: <code>(abc . (123 . ("eĥoŝanĝo" . ((ĉiuĵaŭde . nil) . nil))))</code>, kie ''nil'' estas speciala atomo, signifanta malplenan liston = <code>()</code>.
(ordono argumento ...)
 
== Funkcioj ==
Ĉiu argumento povas esti voko al alia funkcio:
'''Funkcioj''' estas skribataj ankaŭ en formo de listo: <code>(+ 1 2 3)</code>, kie la unua elemento estas nomo de funkcio, kaj la ceteraj estas ties parametroj. Definoj de funkcioj estas voko de speciala funkcio <code>defun</code> (kiu havas tri argumentojn: nomo de nova funkcio, listo de ĝiaj argumentoj, kaj ĝia korpo). Jen estas defino de [[rekursia funkcio]] [[faktorialo]]:
<source lang=lisp>
(defun faktorialo (n)
(if (<= n 1)
1
(* n (faktorialo (- n 1)))
)
)
</source>
Speciala funkcio "if" havas tri argumentojn, ĝi kalkulas la unuan (kondiĉo), se ties valoro estas vero (io ajn ne egala al <code>nil</code>), tiam la rezulto estas la valoro de la dua argumento, alie la rezulto estas la valoro de la tria.
 
(ordono (alia-funkcio argumento-por-alia) argumento-por-ordono)
 
Aliaj funkcioj:
Ĉi tio helpas skribi programojn por artefarita intelekto ĉar datumo
* quote - donas sian argumenton kiel simbolon, sed ne kiel variablon, do blokas ĝian kalkuladon: <code>(quote a)</code> --> a. Ekzistas mallongigo de tiu ĉi funkcio - apostrofo: <code>'a</code> --> a
en LISP havas la saman formon kiel programoj. Oni povas skribi
* cons - kombinas liston el du siaj argumentoj: <code>(cons 'a 'b)</code> --> (a . b), <code>(cons 'a (cons 'b . nil))</code> --> (a b), <code>(cons 'a '(b c))</code> --> (a b c)
funkciojn kiuj povas skribi aŭ ŝanĝi aliajn funkciojn.
* car - kalkulas la unuan elementon de argumento - listo, aŭ donas nil-on, se la argumento ne estas listo: <code>(car '(a b c))</code> --> a
* cdr - kalkulas la reston de la listo sen la unua elemento: <code>(cdr '(a b c))</code> --> (b c)
* atom - logika funkcio, kiu kontrolas, ĉu la argumento estas atomo
* eq - logika funkcio, kiu kontrolas ĉu la du argumentoj estas egalaj atomoj
 
Ĉar en lispo kaj datumoj kaj funkcioj estas listoj, tial eblas skribi funkciojn, kiuj kreas novajn funkciojn aŭ ŝanĝas aliajn.
[[Common Lisp]] estas populara dialekto de LISP.
 
== Ekzemploj ==
== "Saluton, mondo!" en LISP ==
[[Kuino]] - programo, kies rezulto estas la teksto de si mem:
<source lang=lisp>
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
</source>
 
[[Saluton, mondo!]]:
<nowiki>
<source lang=lisp>
(print "Saluton, mondo!")
</nowikisource>
 
 
== Eksteraj ligoj ==
 
* http://www.supelec.fr/docs/cltl/clm/clm.html <!-- zh:Common Lisp the Language -->
* http://lisp.org
* http://www.delorie.com/gnu/docs/elisp-manual-21/elisp_toc.html <!-- zh:Emacs Lisp手册 zh->eo:Emacs _Lisp手册_ -->
* http://www.clisp.org/
* http://www-formal.stanford.edu/jmc/frames.html <!-- zh:John McCarthy的主页 -->
* http://wwwclisp.lispsourceforge.ronet/site <!-- ro:www.lisp.ro -->
<!-- ceteraj tre multaj kaj nekompreneblaj ligiloj estas transmetitaj en "diskuto"n -->
* http://www-formal.stanford.edu/jmc/history/lisp/lisp.html
 
* http://www-formal.stanford.edu/jmc/lisp20th/lisp20th.html
* http://www.gigamonkeys.com/book/ <!-- en:"Practical Common Lisp" en->eo:"_Practical_ (Komuna, Vulgara) _Lisp_" de:Practical Common Lisp hu:-- Könyv a Lisp önálló elsajátításához. {{Külső/Angol}} hu->eo:-- _Könyv_ a _Lisp_ _önálló_ _elsajátításához_. {{_Külső_/_Angol_}} -->
* http://www.paulgraham.com/onlisp.html <!-- en:"On Lisp" en->eo:"(Super, Sur) _Lisp_" -->
* http://lisp.org <!-- tr:-- Lisp Kullanıcıları Derneği tr->eo:-- LISP (programlingvo) _Kullanıcıları_ _Derneği_ en:Association of Lisp Users en->eo:Asocio (da, de) _Lisp_ _Users_ hu:-- Lisp Felhasználók Egyesülete {{Külső/Angol}} -->
* http://www.cliki.net/ <!-- tr:-- CLiki, Common Lisp ile yazılmış [[%C3%96zg%C3%BCr yaz%C4%B1l%C4%B1m]] ile ilgili bir viki. tr->eo:-- _CLiki_, _Common_ LISP (programlingvo) _ile_ _yazılmış_ [[%_C3_%_96zg_%_C3_%_BCr_ _yaz_%_C4_%_B1l_%_C4_%_B1m_]] _ile_ _ilgili_ _bir_ _viki_. en:CLiki sv:-- en Wiki för Common Lisp sv->eo:-- _en_ Vikio _för_ _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) hu:-- CLiki, [[Common Lisp]] alapú [[szabad szoftver]]ek wikije {{Külső/Angol}} -->
* http://www.lispworks.com/reference/HyperSpec/Front/index.htm <!-- tr:-- ANSI Common Lisp standardından türetilmiş "HyperSpec". tr->eo:-- _ANSI_ _Common_ LISP (programlingvo) _standardından_ _türetilmiş_ "_HyperSpec_". -->
* http://mitpress.mit.edu/sicp/full-text/book/book.html <!-- tr:-- Bilgisayar Programlarının Yapısı ve Okuması (Structure and Interpretation of Computer Programs) tr->eo:-- Komputilo _Programlarının_ _Yapısı_ _ve_ _Okuması_ (_Structure_ _and_ _Interpretation_ _of_ _Computer_ _Programs_) -->
* http://www.ucw.cz/~hubicka/skolicky/skolicka6.html <!-- cs:Hubičkova školička o Lispu cs->eo:_Hubičkova_ _školička_ o _Lispu_ -->
* http://www.lisp.org/HyperSpec/FrontMatter/index.html <!-- cs:Common Lisp HyperSpec™ cs->eo:_Common_ LISP (programlingvo) _HyperSpec_™ -->
* http://clisp.cons.org/ <!-- cs:ANSI Common Lisp Implementation cs->eo:_ANSI_ _Common_ LISP (programlingvo) _Implementation_ es:CLisp, a Common Lisp implementation es->eo:_CLisp_, a _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) _implementation_ -->
* http://alu.cliki.net/Industry%20Application
* http://citeseer.ist.psu.edu/steele93evolution.html <!-- en:The Evolution of Lisp en->eo:La Evoluismo (da, de) _Lisp_ -->
* http://www.catb.org/~esr/jargon/html/L/LISP.html
* http://web.media.mit.edu/~stefan/isis/ <!-- en:Isis en->eo:Iziso -->
* http://www.digitool.com/ <!-- en:Macintosh Common Lisp (MCL) en->eo:_Macintosh_ (Komuna, Vulgara) _Lisp_ (_MCL_) -->
* http://jatha.sourceforge.net/ <!-- en:Jatha -->
* http://www.catb.org/~esr/faqs/hacker-howto.html#skills1
* http://philip.greenspun.com/research/
* http://wiki.alu.org/ <!-- en:Association of Lisp Users Wiki en->eo:Asocio (da, de) _Lisp_ _Users_ (Vikio, Diskuto:Ĉefpaĝo/Arĥivo 1) -->
* http://www.cons.org/ <!-- en:A collection of Lisp-related sites en->eo:(A, _) _collection_ (da, de) _Lisp_-(rilatita, rakontita) situoj sv:-- en samling Lisp-relaterade sidor sv->eo:-- _en_ _samling_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft)-_relaterade_ _sidor_ hu:-- Lisp-hez kapcsolódó lapok gyűjteménye {{Külső/Angol}} -->
* http://community.computerhistory.org/scc/projects/LISP/ <!-- en:History of LISP at the Computer History Museum en->eo:Historio (da, de) Vikipediista diskuto:Rob Hooft (at, ĉe, en) la (Komputilo, Komputero) Historio Muzeo -->
* http://www.norvig.com/paip.html <!-- en:"Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp" en->eo:"_Paradigms_ (da, de) Artefarita (Inteligenteco, Inteligento) (Programante, Programado): (Kazo, Kuglingo, Usklo, uskleco, Kesto, Afero, Skatolo) _Studies_ (in, en) (Komuna, Vulgara) _Lisp_" -->
* http://www.paulgraham.com/acl.html <!-- en:"ANSI Common Lisp" en->eo:"_ANSI_ (Komuna, Vulgara) _Lisp_" -->
* http://mitpress.mit.edu/sicp/sicp.html <!-- en:"Structure and Interpretation of Computer Programs" en->eo:"(Strukturo, Vikipediista diskuto:Rob Hooft) kaj Interpretado (da, de) (Komputilo, Komputero) (Programoj, Programas)" -->
* http://www.apl.jhu.edu/~hall/lisp.html <!-- en:An Introduction and Tutorial for Common Lisp en->eo:(An, _) _Introduction_ kaj _Tutorial_ (ĉar, kontraŭ, por, pro) (Komuna, Vulgara) _Lisp_ -->
* http://www.solace.mh.se/~janne/lecture-notes/university/pdf/common-lisp-97.pdf <!-- en:Mid-Sweden University Sundsvall Common Lisp B-level course en->eo:_Mid_-(Svedio, Svedujo, Svedia) Universitato _Sundsvall_ (Komuna, Vulgara) _Lisp_ B-(nivelo, ebenigi, ebena) (kurso, plado) hu:Sundsvall-i Közép-Svédországi Egyetem, Common Lisp B-szintű kurzus, 1997 tavaszi félév, előadás jegyzet (PDF formátum) hu->eo:_Sundsvall_-_i_ _Közép_-_Svédországi_ Universitato, _Common_ _Lisp_ B-_szintű_ _kurzus_, 1997 _tavaszi_ _félév_, _előadás_ _jegyzet_ (_PDF_ _formátum_) -->
* http://www.psychologie.uni-trier.de/projects/ELM/elmart.html <!-- en:An interactive LISP course en->eo:(An, _) _interactive_ Vikipediista diskuto:Rob Hooft (kurso, plado) de:Ein interaktiver LISP-Kurs de->eo:_Ein_ _interaktiver_ LISP (programlingvo)-_Kurs_ -->
* http://www.geocities.com/fhzeya20042000/lisp.htm <!-- en:Lisp tutorial by Faiz ul haque Zeya en->eo:_Lisp_ _tutorial_ (by, pera, ĉe, de, fare de, preter) _Faiz_ ul _haque_ _Zeya_ -->
* http://www.lisp.org/table/systems.htm <!-- en:A list of Common Lisp implementations en->eo:(A, _) listo (da, de) (Komuna, Vulgara) _Lisp_ realigoj hu:-- [[Common Lisp]] megvalósítások listája. {{Külső/Angol}} -->
* http://www.cons.org/cmucl <!-- en:CMUCL: a high-performance, free Common Lisp implementation en->eo:_CMUCL_: (a, _) alta-(seanco, rendimento), (libera, senpaga) (Komuna, Vulgara) _Lisp_ realigo -->
* http://www.clisp.org/ <!-- en:GNU CLISP en->eo:GNU _CLISP_ -->
* http://www.gnu.org/software/gcl <!-- en:GCL hu:-- többplatformos [[GNU]] [[Common Lisp]] megvalósítás {{Külső/Angol}} hu->eo:-- _többplatformos_ [[GNU]] [[_Common_ _Lisp_]] _megvalósítás_ {{_Külső_/_Angol_}} -->
* http://www.rtfm.org.ar/slisp/ <!-- en:Simple Lisp Interpreter en->eo:(Simpla, Naiva, Malklera) _Lisp_ Interpretilo -->
* http://www.newlisp.org <!-- en:newLISP de:newLisp -->
* http://hedgehog.oliotalo.fi/ <!-- en:Hedgehog Lisp en->eo:Erinaco _Lisp_ -->
* http://software-lab.de/down.html <!-- en:Pico Lisp -->
* http://www.lisperati.com/ <!-- en:Lisp Comic en->eo:_Lisp_ Komika et:Lispi koomiks -->
* http://www.cliki.net <!-- es:www.cliki.net -->
* http://lists.debian.org/debian-user-spanish/2005/07/msg00126.html <!-- es:http://lists.debian.org/debian-user-spanish/2005/07/msg00126.html es->eo:_http_://_lists_._debian_._org_/_debian_-_user_-_spanish_/2005/07/_msg00126_._html_ -->
* http://lists.debian.org/debian-user-spanish/2005/07/msg00126.html], <!-- es:generar páginas dinámicamente con lisp y apache, artículo de [[Rober Morales]] es->eo:_generar_ _páginas_ _dinámicamente_ _con_ (lISP (programlingvo), vikipediista diskuto:Rob Hooft) y _apache_, _artículo_ _de_ [[_Rober_ _Morales_]] -->
* http://www.kosara.net/thoughts/ackermann42.html <!-- es:La expansión decimal de A(4,2) es->eo:_La_ _expansión_ _decimal_ _de_ A(4,2) -->
* http://www.gnu.org/software/emacs/emacs.html
* http://www.cs.utexas.edu/users/moore/acl2/
* http://maxima.sourceforge.net/
* http://www.gnu.org/software/gcl/gcl.html <!-- es:GNU Common Lisp es->eo:GNU _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) -->
* http://www.franz.com/ <!-- es:Allegro Common Lisp es->eo:_Allegro_ _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) de:Franz – Eine weitere Lisp Entwicklungsumgung mit einer kostenlosen Trial-Version de->eo:Francisko – _Eine_ _weitere_ _Lisp_ _Entwicklungsumgung_ _mit_ _einer_ _kostenlosen_ _Trial_-_Version_ -->
* http://www.cons.org/cmucl/ <!-- es:CMU Common Lisp es->eo:_CMU_ _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) -->
* http://openmcl.clozure.com/ <!-- es:OpenMCL -->
* http://sbcl.sourceforge.net/ <!-- es:Steel Bank Common Lisp es->eo:_Steel_ _Bank_ _Common_ (LISP (programlingvo), Vikipediista diskuto:Rob Hooft) -->
* http://en.wikibooks.org/wiki/Programming:Lisp <!-- et:Ingliskeelne Wikiraamat Lispist -->
* http://www.symbolics.com <!-- it:Symbolics Technology Inc. de:Symbolics -->
* http://www.sts.tu-harburg.de/~r.f.moeller/symbolics-info/symbolics.html <!-- it:foto -->
* http://www.psychologie.uni-trier.de:8000/projects/ELM/elmart.html/ <!-- sv:En interaktiv Lispkurs -->
* http://www.norvig.com/design-patterns/ <!-- sv:Design patterns hu:Design pattern-ek -->
* http://www.gnu.org/fun/jokes/eternal-flame.ogg <!-- sv:musikaliskt verk -->
* http://www.gnu.org/fun/jokes/eternal-flame.html <!-- sv:text sv->eo:teksto -->
* http://www.gnu.org/fun/#Music <!-- sv:GNU-folket sv->eo:GNU-_folket_ -->
* http://www-formal.stanford.edu/jmc/recursive/recursive.html <!-- ko:Recursive Functions of Symbolic Expressions and Their Computation by Machine ko:"Recursive Functions of Symbolic Expressions and Their Computation by Machine," John McCarthy, Massachusetts Institute of Technology, Cambridge, Mass. April 1960 -->
* http://www.cs.umbc.edu/331/resources/papers/Evolution-of-Lisp.pdf <!-- ko:''The Evolution of Lisp'', Guy L. Steel Jr, Richard P. Gabriel ko:"The Evolution of Lisp," Guy L. Steel Jr, Richard P. Gabriel -->
* http://mitpress.mit.edu/sicp/ <!-- ko:가 바로 Scheme을 쓰고 있다.) 1990년에 Scheme의 IEEE 표준이 정해졌다. ko:"Structure and Interpretation of Computer Programs," Hal Abelson, Jerry Sussman and Julie Sussman -->
* http://lisp.or.kr/ <!-- ko:한국 리습 사용자 모임 ko->eo:Koreio _리습_ _사용자_ _모임_ -->
* http://www-formal.stanford.edu/jmc/lisp20th.html <!-- ko:"Lisp - Notes On its Past and Future," John McCarthy, 1980 -->
* http://www-formal.stanford.edu/jmc/ <!-- ko:John McCarthy 홈페이지 -->
* http://www.paulgraham.com/lisp.html <!-- ko:Paul Graham 홈페이지 -->
* http://www.cs.auckland.ac.nz/CDMTCS/chaitin/lisp.html <!-- fr:Elegant LISP Programs fr->eo:_Elegant_ Vikipediista diskuto:Rob Hooft _Programs_ -->
* http://www.algo.be/clr.html <!-- fr:Lisp : présentation et ressources fr->eo:(LISP (programlingvo), Vikipediista diskuto:Rob Hooft) : _présentation_ _et_ _ressources_ -->
* http://www.cadxp.com/forumXForum-100.htm <!-- fr:AutoLisp : forum de discussion -->
* http://www-formal.stanford.edu/jmc/recursive.html <!-- de:John McCarthys Originalarbeit über Lisp -->
* http://www8.informatik.uni-erlangen.de/html/lisp-enter.html <!-- de:Herbert Stoyan's Lisp Seiten (Geschichte, Personen, Bibliographie, sehr ausfuehrlich) de->eo:_Herbert_ _Stoyan_'s _Lisp_ _Seiten_ (Historio, _Personen_, _Bibliographie_, _sehr_ _ausfuehrlich_) -->
* http://www.paulgraham.com/lib/paulgraham/jmc.ps <!-- de:Eine konzise Einführung in Anlehnung an McCarthys Arbeit -->
* http://www.lispworks.com/documentation/HyperSpec/Front/index.htm <!-- de:Common Lisp HyperSpec -->
* http://clisp.sourceforge.net/ <!-- de:Clisp – ein Open Source Common LISP für verschiedene Plattformen de->eo:_Clisp_ – _ein_ Malfermita kodo _Common_ LISP (programlingvo) _für_ _verschiedene_ _Plattformen_ -->
* http://www.lispworks.com/ <!-- de:Lispworks – Eine für Privatpersonen kostenlose LISP Entwicklungsumgebung de->eo:_Lispworks_ – _Eine_ _für_ _Privatpersonen_ _kostenlose_ LISP (programlingvo) _Entwicklungsumgebung_ -->
* http://common-lisp.net/project/slime/ <!-- de:Slime -->
* http://www.paulgraham.com/paulgraham/onlisp.html <!-- de:Paul Graham On Lisp de->eo:Paŭlo _Graham_ _On_ _Lisp_ -->
* http://alu.cliki.net/ <!-- hu:-- a Lisp Felhasználók Egyesületének wiki lapja {{Külső/Angol}} hu->eo:-- a _Lisp_ _Felhasználók_ _Egyesületének_ vikio _lapja_ {{_Külső_/_Angol_}} -->
* http://www.psychologie.uni-trier.de:8000/projects/ELM/elmart.html <!-- hu:Interaktív Lisp tanfolyam -->
* http://shamir.ebizlab.hit.bme.hu/docs/programming/Lisp/lispsil.htm <!-- hu:Az Allegro Common Lisp 4.2 és használata -->
 
[[Kategorio:Funkciaj programlingvoj]]