LISP - Variabili

In LISP, ogni variabile è rappresentata da un symbol. Il nome della variabile è il nome del simbolo e viene memorizzato nella cella di memorizzazione del simbolo.

Variabili globali

Le variabili globali hanno valori permanenti in tutto il sistema LISP e rimangono in vigore fino a quando non viene specificato un nuovo valore.

Le variabili globali vengono generalmente dichiarate utilizzando il defvar costruire.

Per esempio

(defvar x 234)
(write x)

Quando si fa clic sul pulsante Esegui o si digita Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è

234

Poiché non esiste una dichiarazione di tipo per le variabili in LISP, si specifica direttamente un valore per un simbolo con l'estensione setq costruire.

Per esempio

->(setq x 10)

L'espressione sopra assegna il valore 10 alla variabile x. Puoi fare riferimento alla variabile usando il simbolo stesso come espressione.

Il symbol-value la funzione permette di estrarre il valore memorizzato nel luogo di memorizzazione del simbolo.

Per esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)

(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)

Quando si fa clic sul pulsante Esegui o si digita Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è.

x = 10 y = 20 
x = 100 y = 200

Variabili locali

Le variabili locali sono definite all'interno di una determinata procedura. Anche i parametri denominati come argomenti all'interno di una definizione di funzione sono variabili locali. Le variabili locali sono accessibili solo all'interno della rispettiva funzione.

Come le variabili globali, anche le variabili locali possono essere create utilizzando il setq costruire.

Ci sono altri due costrutti: let e prog per creare variabili locali.

Il costrutto let ha la seguente sintassi.

(let ((var1  val1) (var2  val2).. (varn  valn))<s-expressions>)

Dove var1, var2, ..varn sono nomi di variabili e val1, val2, .. valn sono i valori iniziali assegnati alle rispettive variabili.

quando letviene eseguita, a ciascuna variabile viene assegnato il rispettivo valore e infine viene valutata l' espressione s . Viene restituito il valore dell'ultima espressione valutata.

Se non includi un valore iniziale per una variabile, viene assegnato a nil.

Esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))

Quando si fa clic sul pulsante Esegui o si digita Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è.

x = A y = B z = C

Il prog Il costrutto ha anche l'elenco delle variabili locali come primo argomento, seguito dal corpo del file prog, e qualsiasi numero di espressioni s.

Il prog funzione esegue l'elenco di s-espressioni in sequenza e restituisce nil a meno che non incontri una chiamata di funzione denominata return. Quindi l'argomento del return la funzione viene valutata e restituita.

Esempio

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))

Quando si fa clic sul pulsante Esegui o si digita Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è.

x = (A B C) y = (1 2 3) z = (P Q 10)