Constants in LISP
In LISP all constants are global variables. Values of constant never change throughout the execution of the program.
Defining constant in LISP:
New global constants are defined using the DEFCONSTANT construct
(defconstant name initial-value-form "documentation-string")
Let’s create a global constant whose value will contain the rate of shirt
(defconstant shirt-rate 575 "shirt-rate is having a constant value of 575")
Now let’s create a function that will calculate the total bill by taking the number of shirts as input and then multiplying it with our previously defined constant shirt-rate
(defun calc-total-bill (n) "Calculates the total bill by multiplying the number of shirts purchased with its constant rate" (* shirt-rate n))
Let’s call this function
(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))
We can check if some symbol is the name of a global variable or constant by using boundp predicate, As it is the predicate it returns T if it finds the constant with a particular name and will return NIL if it doesn’t.
For example, in our program, we have a constant shirt-rate defined so let’s run this
As expected it has returned T when it finds a constant shirt-rate but returns NIL when it can’t find the constant rate in the program.