LISP - Variables

En LISP, cada variable está representada por un symbol. El nombre de la variable es el nombre del símbolo y se almacena en la celda de almacenamiento del símbolo.

Variables globales

Las variables globales tienen valores permanentes en todo el sistema LISP y permanecen vigentes hasta que se especifica un nuevo valor.

Las variables globales se declaran generalmente usando el defvar construir.

Por ejemplo

(defvar x 234)
(write x)

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es

234

Dado que no hay una declaración de tipo para las variables en LISP, usted especifica directamente un valor para un símbolo con el setq construir.

Por ejemplo

->(setq x 10)

La expresión anterior asigna el valor 10 a la variable x. Puede hacer referencia a la variable utilizando el símbolo en sí como expresión.

los symbol-value La función le permite extraer el valor almacenado en el lugar de almacenamiento de símbolos.

Por ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

(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)

Cuando hace clic en el botón Ejecutar o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es.

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

Variables locales

Las variables locales se definen dentro de un procedimiento dado. Los parámetros nombrados como argumentos dentro de una definición de función también son variables locales. Las variables locales son accesibles solo dentro de la función respectiva.

Como las variables globales, las variables locales también se pueden crear usando el setq construir.

Hay otras dos construcciones: let y prog para crear variables locales.

La construcción let tiene la siguiente sintaxis.

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

Donde var1, var2, ..varn son nombres de variables y val1, val2, .. valn son los valores iniciales asignados a las respectivas variables.

Cuando letse ejecuta, a cada variable se le asigna el valor respectivo y finalmente se evalúa la expresión-s . Se devuelve el valor de la última expresión evaluada.

Si no incluye un valor inicial para una variable, se asigna a nil.

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando hace clic en el botón Ejecutar o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es.

x = A y = B z = C

los prog La construcción también tiene la lista de variables locales como su primer argumento, que es seguido por el cuerpo de la prog, y cualquier número de expresiones-s.

los prog la función ejecuta la lista de expresiones-s en secuencia y devuelve nil a menos que encuentre una llamada de función llamada return. Entonces el argumento del return La función se evalúa y devuelve.

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando hace clic en el botón Ejecutar o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es.

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