# 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
Syntax:

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

Example:

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

Code:

## 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``)) `

Output :

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

## Lisp

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

Output :

```T
NIL```

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.

Previous
Next