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 T 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