Newsgroup: it.comp.ia
Titolo: LISP: come funziona ?

Sto cercando di imparare a programmare in Lisp,
come si traduce questa funzione in equivalente Basic o C ??
Scusate ma nella gerarchia IT non esiste un NG del tipo it.comp.lisp in
italiano!
(DEFUN ABSVAL (X) (COND ((MINUSP X) (MINUS X)) (X)))
MINUSP returns true if real is less than zero; otherwise, returns false.
MINUS
#- is like #+ except that it skips the expression if the test succeeds; that
is,
#-test expression == #+(not test) expression
COND:  cond {!clause}{*} => {result}{*}   dove  clause ::=(test-form
{form}{*)}
Once one test-form has yielded true, no additional test-forms are evaluated.
If no test-form yields true, nil is returned.
Che e' sta roba ?   Chi mi aiuta ?
grazie a tutti.
ciao
davide U

 wrote in message 382ae...@news.megasys.it...


 Che e' sta roba ?   Chi mi aiuta ?
Non credo di essere in grado, tuttavia il concetto di base e' che il
mondo di LISP e' una lista di simboli, da valutare in sequenza, in
maniera assai simile a quella necessaria per elaborare operazioni in
notazione polacca (o era ungherese?) {prefissa,postfissa}.
Riscrivendo il tuo esempio come: 
1 ( 
2	DEFUN 
3	ABSVAL 
4	(
5		X
6	) 
7	( 
8		COND 
9		(
10     			(MINUSP X)
11			(MINUS X)
12		) 
13		(
14			X
15		)
16	)
17 )
la tua lista inizia a linea 1 e finisce a linea 17, contiene quattro
elementi.
Poiche' il primo di questi e' DEFUN (l.2), il compilatore sa che i
successivi tre sono nome da associare alla funzione (l.3), lista di
quelli che in altri linguaggi vengono chiamati parametri relativi
(l.4-6), lista contenente il corpo della funzione (l.7-16).
Quest'ultimo inizia con COND (l.8), che innesca un metodo diverso
per la valutazione degli elementi seguenti.
Ovvero, COND ha come 'parametri' una serie di liste, ognuna composta
a sua volta di due elementi. Nel tuo caso, la prima e' (l.9-12), la
seconda (l.13-15). Il primo elemento di ognuna di queste liste viene
valutato, se restituisce TRUE, il secondo elemento viene restituito,
se restituisce FALSE si passa alla lista 'parametro' di COND
successiva.
"Ma come, la seconda ha un solo elemento!"
Si, lo so, il manuale storico che ho io non parla di questa
eventualita', ne tantomento fa riferimento alla keyword DEFUN (e' del
1981, fa riferimento al LISP 1100 (UNIVAC)). Per cui, immagino che
quel singolo elemento stia a dire "questo e' il valore di default da
restituire senza valutare se tutte le altre liste restituiscono
FALSE", o forse "valutami e restituiscimi", piu' probabile secondo la
logica di LISP per cui un elemento atomico e' di per se TRUE.
Beh, poi il mio libro parte allegramente con le LAMBA notazioni,
suppongo non piu' utilizzate nei LISP moderni, ma tutto quello che ne
estrapolai l'ultima volta che gli diedi un occhiata fu un mal di
testa. :)
Ok, non so se s'e' capito qualcosa o meno, avevo giusto voglia di
rispolverare antichi manuali, stasera.
	polverosamente,
	    Cthulhu
-- 
       Ph'nglui mglw'nafh Cthulhu 
http://www.rlyeh.it
 wgah'nagl fhtgan!
		       <cthulhu at flashnet dot it>

 notazione polacca (o era ungherese?) {prefissa,postfissa}.
Polacca, la notazione ungherese e' un modo per scegliere i nomi delle 
variabili utilizzando dei prefissi che aiutano a riconoscerne il tipo.
-- 
C++U
  Gio "FrOYd" Caturano / Zetha gameZ
 
http://www.dronez.com


Se la memoria non mi inganna
(non vedo una funzione LISP da sei anni!),
ritorna il valore assoluto di X
Ciao,
Gianfranco

ritorna il valore assoluto di X
mi interessa capire come "ragiona" il lisp
per arrivare a quel risultato
grazie.
ciao
davide U


quest'ultima parte (se ho capito bene)
corrisponde al valore/variabile di ritorno della funzione
ma c'e' sempre oppure in certi casi non c'e' ?
grazieeeeeeee per le spiegazioni!!!
ciao
davide U


ciaoo Frank!  :-)
finalmente adesso ho capitooooooooo!  grazie!   :-)
ho incominciato a fare i primi programmi in Lisp, e'
bellissssssiiimooooooo!!   :-O
ciao
davide U

  -Milano:Tecniche nuove,1988-192 pag.;24 cm.
Adesso che mi fai venire in mente, faccio anch'io un salto in biblioteca
...... invece di comprarlooo!!!
grazie
ciao
davide U

 Lisp, in formato postscript (o addirittura i sorgenti LaTeX, non
Io parto con Altavista, pero' se mi dici la URL faccio prima. :)
	cercatamente,


 grazieeeeeeee per le spiegazioni!!!
Prego. :)
	listatamente,
