Lisp/S-expression

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Le S-expression sono le liste nella loro forma più o meno semplificabile in aperta parentesi, funzione, item, item, item... chiusa parentesi e tutte le soluzioni che aprono parentesi in modo nidificato. Le S-expression sono liste.

( 1 2 )
( scuola ( nome ITIS )
         ( preside marcello turati)
         ( n.allievi 1567)
         ( didattica ( meccanica elettronica metallurgia informatica mecatronica))
)
(defun test ( a b )
 ( + a b ))

Queste sono s-expression valide per il linguaggio LISP.

La forma atomica di una S-expression è :

'( NIL . NIL )

Rappresenta una cella di memoria con due elementi (Car e Cdr di cui parleremo dopo) che non puntano a nulla. Questo codice non serve a nulla ma da un esempio di forma minimalista della S-experession.

Forme operative di S-expression sono:

(+ 1 1 2 3 5 8 11)

(* 2 ( / 3 4) )

(defun mysquare (x ) ( * x x ))

'( 2 . "apertura" )

Come si vede dal codice una S-expression inizia con una parentesi e si chiude con una parentesi ed al suo interno sono presenti elementi spaziati (altro codice o dati ) o altri livelli di S-expression nidificate all'infinito.

Il codice legge la vostra stringa digitata sul terminale fino a che non si presenta la parentesi che chiude la S-expression più esterna del sistema nidificato che avete scritto. Solo a questo punto la valuta (eval) e stampa il risultato della funzione di esecuzione/valutazione del codice o dati che avete digitato. Questo è un linguaggio interattivo ed immediato che riceve esegue e risponde.