Variables en LISP

Al igual que en otros lenguajes, en LISP las variables son lugares con nombre que almacenan un valor particular, pero no se declaran de la forma en que declara las variables en C++ o Java, es decir, no necesita mencionar el tipo de datos de las variables cuando las declara como LISP. tecleado dinámicamente .

LISP admite dos tipos de variables:

  1. Variables locales
  2. Variables globales

Variables locales:

También se denominan variables léxicas, estas variables se definen dentro de una función particular y solo el código dentro del formulario vinculante puede hacer referencia a ellas, ya que no se puede acceder a ellas fuera de esa función. Los parámetros de las funciones también son variables locales.

Definición de una variable local:

Se pueden crear nuevas variables locales usando el operador especial LET. Estas variables luego se pueden usar dentro del cuerpo del LET. 
La sintaxis para crear una variable con LET es:

(let (variable)
  body-of-expressions)

Una expresión let tiene dos partes 

  • La primera parte consta de instrucciones para crear una variable y asignarles valores.
  • La segunda parte consiste en una lista de expresiones s

Ahora vamos a crear variables locales usando la sintaxis mencionada anteriormente

Lisp

(let ((x 10) (y 20) z)
  (format t "Local Variables :~%")
  (format t "x = ~a, y = ~a & z=~a~%" x y z))

Aquí hemos asignado x e y con valores iniciales y para z no se proporciona ningún valor, por lo tanto, NIL se establecerá como el valor predeterminado de z.

Producción : 

Local Variables :
x = 10, y = 20 & z=NIL

Variables globales:

Estas son las variables que tienen un alcance global, es decir, puede acceder a ellas desde cualquier parte del programa. En LISP, las variables globales también se denominan variables dinámicas.

Definición de una variable global:

Las nuevas variables globales se pueden definir mediante la construcción DEFVAR y DEFPARAMETER . La diferencia entre ambos es que DEFPARAMETER siempre asigna un valor inicial y la forma DEFVAR se puede usar para crear una variable global sin darle un valor.

La sintaxis para crear variables globales es:

(defvar *name* initial-value
  "Documentation string")
  
(defparameter *name* initial-value
  "Documentation string")  

Ejemplo:

Vamos a crear una variable global que contenga la tarifa del lápiz como *tarifa-lápiz* y, con la ayuda de una función, calculemos la factura total multiplicando el número total de lápices por nuestra variable global *tarifa-lápiz*.

Lisp

(defparameter *pencil-rate* 10
  "Pencil rate is set to 10")
  
(defun calc-bill (n)
  "Calculates the total bill by multiplying the number of pencils with its global rate"
  (* *pencil-rate* n))
  
(write (calc-bill 20))

Producción:

200

Es una convención de nomenclatura adecuada definir las variables globales para que comiencen y terminen con asteriscos porque, dado que se puede acceder a las variables globales desde cualquier parte del programa, puede haber variables locales con el mismo nombre, por lo tanto, para evitar esta posibilidad por accidente, se utiliza esta convención de nomenclatura. . Ejemplo. *global*

Publicación traducida automáticamente

Artículo escrito por aniruddhashriwant y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *