lisp (cpu lispaldizkari-txikia.elhuyar.eus/pdf/elhuyar-48-06.pdf · 2007. 6. 21. · lisp mramming...

7
LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu zuen 1958.ean. Izenak, gehien erabilaen den &tu- egitura (M-a) aipaizen du. Lengoaia hau gari batean baztwtua izan bazm ere, azken urte hauetan Adirnen Anifizialarekin batera berpiztu egin da eta orain asko erabilaen da. LISP lengoaiaren funaezko prozesua, sinboloen maneiwa da Lengoaia hau erabil- tzea oso egoltia da daruen egitura edukim kruin garraniritsm dencan. LISPen ezau- ganirik gmtziisuenak honako hauek dim: a) LTSP, lengoaia funtzionden aintzidaria da. hngoaia funtzionaletan programek prozesuaren definizioa egiten dute, baina ez dute zehazten agindu-sekuentzia, hau da, ez da programen konwla programa- tzen. Ezaugami honegatik, lengoaia fun- tzionden bidez egindako programetan pa- ralelotasuna argi dago era arkitektura ba- nametarako (CPU bat baino gehiago el- karrekin lanean) oso egokiak dira. Dena deia, LISP ez da guzliz funtzionala, len- goaia agintzaileen zenbait erraztasun eta arazo ere badauka eta. b) LlSP lengoaia oso egokia da definizio errekumiboak egiteko, aurreko ezau- gama dela eta. Errekurtisibitatenren ma- neiua da funtwzko ezaugarsi brit. C) Sintaxia oso sinplea da. Espresie gu ti&, daiuak nahiz programak, listak di eta parentesien bida mugatzen dira. d) LISPek prozesu elkarresagilea errazt du. Nomalean Interpretasen da, eta ib iko dugunez. espresiaak jaso bezain Ir ter ebaluafzen diiu intmptaaaileak. e) LISPek beheranzko diseinua buluatt du. Jatomzko funtrioez gain, guk fu tzio berriak definitten ditugu, zeina jalrirrizkoak balira bezala maneiatu bai~ dira Funtzioen m e k o lotura be halaha da, eta ex du problemarik si m. Erabilpenei begira, LISP Adimen AI fízialaren alwrean erabilaen da gehien 'b Sistema Adituak, lengoaia naturalaren &a menduak, Robotikarako software eta mt: ko aplikazioetan, LTSP oso erabilia da. I: na &la, beste alor baauetan ere erabiltl da: sistemen pragrarnazioan, testu-pm sadoretan eta infonnatikaren iraka~kuntz besteak kte. Asmatu zenetik, (orain dela 25 u baino gehiago) LISPa garaiu egin da. Zer kan mzo batzuk konpndu edo murri qin dira: Adibidez: - LISP programak oso mamo egikañt; riren, baina gaurregun, LISP konpi dore sofistikatuei esker, exekutioa karra izan daiieke.

Upload: others

Post on 21-Jan-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

LISP m r a m m i n g - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu zuen 1958.ean. Izenak, gehien erabilaen den &tu- egitura ( M - a ) aipaizen du. Lengoaia hau gari batean baztwtua izan bazm ere, azken urte hauetan Adirnen Anifizialarekin batera berpiztu egin d a eta orain asko erabilaen da.

LISP lengoaiaren funaezko prozesua, sinboloen maneiwa d a Lengoaia hau erabil- tzea oso egoltia da daruen egitura edukim k r u i n garraniritsm dencan. LISPen ezau- ganirik gmtziisuenak honako hauek dim:

a) LTSP, lengoaia funtzionden aintzidaria da. hngoaia funtzionaletan programek prozesuaren definizioa egiten dute, baina ez dute zehazten agindu-sekuentzia, hau da, ez da programen konwla programa- tzen. Ezaugami honegatik, lengoaia fun- tzionden bidez egindako programetan pa- ralelotasuna argi dago era arkitektura ba- nametarako (CPU bat baino gehiago el- karrekin lanean) oso egokiak dira. Dena deia, LISP ez da guzliz funtzionala, len- goaia agintzaileen zenbait erraztasun eta arazo ere badauka eta.

b) LlSP lengoaia oso egokia da definizio errekumiboak egiteko, aurreko ezau- gama dela eta. Errekurtisibitatenren ma- neiua da funtwzko ezaugarsi brit.

C) Sintaxia oso sinplea da. Espresie gu ti&, daiuak nahiz programak, listak di eta parentesien b i d a mugatzen dira.

d) LISPek prozesu elkarresagilea errazt du. Nomalean Interpretasen da, eta ib iko dugunez. espresiaak jaso bezain I r ter ebaluafzen diiu intmptaaaileak.

e) LISPek beheranzko diseinua buluatt du. Jatomzko funtrioez gain, guk fu tzio berriak definitten ditugu, zeina jalrirrizkoak balira bezala maneiatu b a i ~ dira Funtzioen m e k o lotura be halaha da, eta ex du problemarik si m.

Erabilpenei begira, LISP Adimen AI fízialaren alwrean erabilaen da gehien 'b Sistema Adituak, lengoaia naturalaren &a menduak, Robotikarako software eta mt: ko aplikazioetan, LTSP oso erabilia da. I: na &la, beste alor baauetan ere erabiltl da: sistemen pragrarnazioan, testu-pm sadoretan eta infonnatikaren iraka~kuntz besteak k t e .

Asmatu zenetik, (orain dela 25 u baino gehiago) LISPa garaiu egin da. Zer kan m z o batzuk konpndu edo murri q i n dira: Adibidez:

- LISP programak oso m a m o egikañt; riren, baina gaurregun, LISP konpi dore sofistikatuei esker, exekutioa karra izan daiieke.

Page 2: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

- LYSP programak irakumen eta ruzen- tzen zailak ziren, baina gaumgungo edi- tore eta "debugger*'ekin arazo hari kon- pnduta geldítu da.

- Bestalde LISP makinak sanu dira, zein- mezan LISP programen exekuzioa isu- garrizko abiaduraz bumtzen bait da. Ma- kina hauen eragozpena, prezioa da; gutxi hedaturik daudenez aso garestiak baii dira. Ez dago LISP standard-ik, baina LESP desberdinen artean ez dago diferen- la ia handirik. Ezagunenak COMMON LISP, MACLISP, INTERLISP, NIL eta LE LlSP dira

(UEU (UDAKO EUS K M - UNIBERTSI- TATEA)

(TOKI AK (BAIONA IRUNEA DONOSSIA))

mLEFONOA (BLBO 4317145)))

2.- Fakioriala kalku laizeko programa @EFUN FAKTO (N)

(CONQ (C = N 0) 1) (t (* N (FAKTO (- N 1)))))).

3.- FaktcriaIaren exekuzioa (FAKTO 6)

2. LISP-en objektuak

LTSP lengoaiaz datuak eta agfnduak espresio sinbolikoak dira. Beraz, dütuek eta programek egitura berbera dute. Homgatik LISP programa baiek beste programa büt datu gísa erabil dezake, edo programa baten exekuzioak sor dezake CISP programa bat.

Esan dugvnaren arabera LISPen objek- tuak espresio sinbolikoak dira, baina bi mo- ~atakoak izan dailezke:

atomoak: tenbakiak edo sinboloak dira. Sin- boIoei balio bat, definizio bat a a propierate-lista bat l own zaiz- he.

U&: Parentesi arteko espsioak, non osagai bakoitza atomo bat edo lista den. Ikusten denez definizioa errekurtsitma da. Lista hutsa ere definimen daetaNIL identifikadc- rearen bidez ezagutzen da.

Aginduetan listnren lehmgo cisagaia, funtzic? baten izena den sinbolo bat da.

LISP objektuak memorian adieratteko d o k o arauak s e g i m dira:

a) Sinboloak erreferentziatzen dErenem. haien helbidea adiemten da.

b) Lista bat adierazteko zuhaitz bitar bat waikitzen da. Ezkerreko umea da Iisraren ezkerreko osagaia eta tskuinekoa gai- nmtzeko osagaiek osatzen duten lista da. Elementu terminal& stomoak eta lis- ta hutsa ( ) dira.

Page 3: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

LlSP interpretatzaileak memoria kude- atzen du. Horretarako memoriako toki esku- raganien lista eslekatu bat maneiatzen du eta mki eskuragaria bukatzen denean, zabor- bilketa (garbage collection) egiten du.

Konpiladoreak badaude ere itzultzailea nomlean interpretakaile bat izango da. Pro- grama espresio sinboliko bat izanik, inter- pretatzaileak ondoko eskema s e g i k n du: Ebaluazioa EVAL funwioa apli

kean daba EVALfunaioakS esprecio bc rako ondoko eskema segitzen du: (EVAL

S atomikoa Rai S, S zenbakia 3 , da? da?

Itzuli zenbakia

Ez

S lista da Itzuii sinbolaari S = (S1 S2... S,) lotutako b f ioa

Page 4: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

fiusten dena listen ebaluazioa m k u r - &¡boa da, zeren espresio bat ebaluakekoosa- gai guztiak (lehenengoa kenduta) ebaluatu khar bait dira eia osagai hauek ebaluatu khar dicen l i s a izan daitezke; eta horrela atornoak aurhiu me. Atornoak aukiken direnean. atzera-jotzea (backuacking) Feria- tzen da. aplikatu gabe dauden funuioak aplka daitezen.

Lehen ikusi dugun faktorialaren ka- suaren funtzioa (FAKTQ 3 ) ebaluatzeko, on- doko urratsak ematen dira

(FAKTO 3) 6

1 5. Zenbait hnizio

Funtt imn man pruiikatuak kreizten dira; egiazkoa m ala faltsua [NIL]. Faltsua lista hursaien biiEez adierazzen da eta egiaz- Loa Iista hutsa ex den zerbaiten bitana.

Gainontzeko funtzioen emairza, a t e moa edo lista izan daiteke k a u m arabera.

Argumentua ez dela ebalu atu behar adierazten du, hau da, konstante bar defi- nitzen du. Oso erabilia denez laburdura bat erabilaen da; ' karakterea

IQUOTE A) = 'A ; A karakterea, A sinboloaren ebal uazioa.

Osa funtzio inponanteak dira. Ernai- iza lista edo atoma bat da. Gmantzitsuenak hwiako hauek dimgu:

a) (CONS atomoa lisra) ; lista b e d bat sor- aen du atomoa listaten ezkerreko osagai bihumiz. A 6 (CONS 'A '(BC)) 4 (A B O

b) (APPEND listal lista2) ; bi lista b a w n ditu lista baka bateian Ad. (APPEND'(AB)'(XY)) + (A B X Y)

C) (CAR lista) ; ezkerreko osagaia lortzen du. A d ( C m '(A B C)) + A

d) (CDR lista) ; ezkerreko osagaia kenduta gelditan den lista loraen du. A d (CDR '(ABC)) + (B C)

Emaiba zenbakia da. E z k m a n eragi- keta zehaztgn da eta ondoan erag igaiak (idaz- kera aumfi nkw) .

Eragiketak +, -, *, I, EXP, POWER. SQRT, LOG, R W M , etab, luze bat dira.

(+ 3 4 ) + 3

( * ( / 6 2 $ ( - 4 ( + 3 2 ) ) ) + - 6

Emaitza fdtsua [NILJ edo egiazkoa [n izan daiteke. Radikaturik g m u i u u - enak honako hauek dira:

(NULL S); T baldin S - N L (ATOM S); T bddin S atomikoa (SYM BOLP S); T baldin S sjnbolua

Page 5: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

(LISP S); T baldin 3 lista (EQUAL S 1 S2); T bddin IEY AL S1

= (EV AL S2) (MEMBER SI S2); T baldin SI SZren

osag aia (= nt 1121: T baldin nl = n2 (K nf ,1121; T baldin nl c n2

Emaicza bar edo besrea s m e n duten predikatv baten ebaluazioaren arabera, haue- tako garranaitsuena COND funtzioa delarik.

COND funlzioak argumentu bai edo gchiago eduki dezake. Argumeniu bakoi- tzean lehenengo elernentua predikatu bat da eta ondwen espresio bat d o gahiago.

COND funtzioa ebalualzeko 1. argu- mentuaren predikatua ebduauen da eta egiazkoa bada (hots, NiLez &nean), mdoan dauden espresioak ebaluatzen dha. 1. asgu- meniuaren predikatua faItsua bada 2. argu- mentumn predikatua ebaluatzen da lehenen- gearekin egin den bezala. eta horrelü argu- meniu baren predikatua egiazkoa izan m, Predikatu guztiak faltsuak baldin badira, ebaluaziom ernaizta NiL izango da.

COND funuioa funwzkoa da progra- m i o errekurtsiboan iharduteko

Ad. (come x Y ) X) ((< X Y) Y)) ahandiena IX,Yf

Orain arte ikusitako funttisak ja- tomzkoak dira, baina guk beste funtrin ba- tzuk &fini ditzakegu, eta definítu ondnren ja- torrizko funtzioak balira berala erabil dai- iezke. Oso ahalmen interesgarria da hau, ze- ren eta problema bal ebazteko aurrerago defi- nituko diren funtzio absmaktu baauk erabil diitzakegu, funtzio halren definizioa proble- honi beheranrkoa (edo top-down) deitzen zaioelap~ramalio-eghraniarenfun tsezko

ezatlgarria da. Funtzio berriak definimko, DEF

funuioa era'albiltzen da. Funuiw honm Ton tua ondokoa da:

(DEFUN izena argumenm-zemda de hnizioa)

kd. ( D E W HANDIENA (X Y ) ICOND (2 X Y) X )

(< x Y) y1

LESP m egokia da programa erre' aibaak idazieko. FVograma errekumiboi funtzio bat definimka, kntzia berbeta biltzen da.

Lehen faktorialaren adibidean az; dugunez. beste kasu askatan problema b dciinuio errekurtsibo bat egitea egokia d Ad. Lisla baten osagaien banira kalkulati

@EFüN BATU L I C 0 - m ( ( W L L) %

Ir I+ (CAR L (BATO ICDR LIS))))

Nola ebaluatako da (BATU '(4 2 5 Ba, ondciko arbolar¡ jarraituz (Ichendi kherantz eta gera gorantz).

ApIikazio honetam elementw erre! turik gabeko multzoak maneiatzen m u l m bakoiaa lista bat bezala adien detuik. Multztiak rnaneiatzeko eragik BIC eta ERAKI, eta predíkatuak, BAF era BERDIN? definitzen dira. Horretl BAKARRA eta MULIZO? funtzia lz tzaileak definiuen dira.

- funtzioa.- Lista baten elen errepiklituak kentzen ditu, multm b uzte;men.

Page 6: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

2s (B ATU '(-8))

Cfa =%+.E"

-8 (RATU '( ))

++Q

0

(defon bakarra (lista) (cond [(null lista) NI)

((membet (car lisra) (cdr lisra))

( b a k m (cdr 1 ista))) (t (cons (car lista)

( b a k m (cdr lista))))))

- MylaoZ pnedikama.- Elementu errepika- mak dauden ala ez aztertzen du.

(defun muIm? (lisia) (cmd ((null lista) t}

((mendu (car lista) (cdr lista)) (nil)

(t (rnuEm? (cdr lista)))))) - m.- Bi muItzoren arteko bil-

keta burvtzen du.

(defun bil (mula01 multzo2) (bakarra (append multzo l rnul-

b~2)) )

- funtzioa.- Bi multzoren arteko eba- kjdura buntmn du.

(ciefun ebaki (mula01 mulao2) (cond ((null (mullzol) nil)

((nember (car multzol) multzci2)

(cons (car mul- tzol) (ebaki

(c& multzol) rnultzo2))) (2 (ebriki (cdr multzol )

mulao2)))) - predikaiua.- khenengo rnulkoa

bigmnaren parte den ala ez esaten du.

(de fun parte? (muftzol muItzo2) (cond {(equd (bill multzol

muilzo 2 ) multzo 2) t) (t nil)))

- m predikatua.- Bi mufko betdinak diren ala ez esaten du.

(defun krdin? (multzo 1 multzo2) (and (parte rnulml mulao2)

(parte rnultzo2 mulaol)))

Page 7: LISP (CPU LISPaldizkari-txikia.elhuyar.eus/pdf/Elhuyar-48-06.pdf · 2007. 6. 21. · LISP mramming - Listm pm grmazioa) programazi~lengmia bat da. John McCarth y estazubatuarrak amatu

Ribliopafia

LISP - P.H. WINSTON. B.K. P A U t HORN - Adlson-Weesleu Publishing Company (ingelesez),

LE LISP - Refererice manual - L*inria (frantsesez).