Constantes en LISP

En LISP todas las constantes son variables globales. Los valores de constante nunca cambian durante la ejecución del programa.

Definición de constante en LISP:

Las nuevas constantes globales se definen utilizando la sintaxis de construcción  DEFCONSTANT
:

(defconstant name initial-value-form 
   "documentation-string")

Ejemplo:

Vamos a crear una constante global cuyo valor contendrá la tasa de camisa

(defconstant shirt-rate 575
  "shirt-rate is having a constant value of 575")

Ahora vamos a crear una función que calculará la factura total tomando el número de camisas como entrada y luego multiplicándolo con nuestra tarifa de camisa constante definida previamente

(defun calc-total-bill (n)
  "Calculates the total bill by multiplying the number of shirts purchased with its constant rate"
  (* shirt-rate n))

Llamemos a esta función

(format t "Total number of shirts purchased : 7~%")
(format t "Price of each shirt : ~2d~%" shirt-rate)
(format t "Total bill amount is : ~2d~%" (calc-total-bill 7))

Código:

Lisp

(defconstant shirt-rate 575
  "shirt-rate is having a constant value of 575")
  
(defun calc-total-bill (n)
  "Calculates the total bill by multiplying the number of
   shirts purchased with its constant rate"
  (* shirt-rate n))
  
(format t "Total number of shirts purchased : 7~%")
(format t "Price of each shirt : ~2d~%" shirt-rate)
(format t "Total bill amount is : ~2d~%" (calc-total-bill 7))

Producción : 

Podemos verificar si algún símbolo es el nombre de una variable global o constante usando el predicadoboundp . Como es el predicado, devuelve si encuentra la constante con un nombre particular y devolverá NIL si no lo hace.

Por ejemplo, en nuestro programa, tenemos una tarifa de camisa constante definida, así que ejecutemos esto

Lisp

(write (boundp 'shirt-rate))
(terpri)
(write (boundp 'rate))

Producción : 

T
NIL

Como era de esperar, ha devuelto T cuando encuentra una tarifa de camisa constante, pero devuelve NIL cuando no puede encontrar la tarifa constante en el programa.

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 *