In this article, we will discuss Vectors in LISP. Vectors in LISP are one-dimensional arrays which are also known as sequences. We can create a vector using vector function and # symbol
Syntax:
variable_name(vector element1 element2 ... element n) or variable_name #(element1 element2 ... element n)
Example: LISP Program to create integer and character vectors and display
;create a vector with 5 integer elements
( setf data1 (vector 12 34 56 22 34 ))
;display (write data1) (terpri) ;create a vector with 5 integer elements using # symbol
( setf data1 #( 12 34 56 22 34))
;display (write data1) (terpri) ;create a vector with 5 character elements
( setf data2 (vector 'g ' e 'e ' k 's))
;display (write data2) (terpri) ;create a vector with 5 character elements
( setf data2 #( 'g 'e 'e 'k 's))
;display (write data2) |
Output:
#(12 34 56 22 34) #(12 34 56 22 34) #(G E E K S) #('G 'E 'E 'K 'S)
Vector operations:
In the given vector we can perform two operations. They are:
- push operation
- pop operation
1. Push Operation:
This is used to insert an element into a vector
Syntax:
(vector-push element array_name)
where
- array_name is an input array
- element is an element to be pushed in an array
Example: LISP Program to create an empty array with size 10 and perform the vector push operation
;create an empty array with size 10
(setq my_array (make - array 10 :fill - pointer 0 ))
;display array (write my_array) (terpri) ;push number 1 into array
(vector - push 1 my_array)
;push number 2 into array
(vector - push 2 my_array)
;push number 3 into array
(vector - push 3 my_array)
;push number 4 into array
(vector - push 4 my_array)
;display (write my_array) |
Output:
#() #(1 2 3 4)
2. Pop Operation:
This function will remove the last inserted element at a time
Syntax:
(vector-pop array_name)
where
- array_name is the input array
Example: POP items in an array
;create an empty array with size 10
(setq my_array (make - array 10 :fill - pointer 0 ))
;display array (write my_array) (terpri) ;push number 1 into array
(vector - push 1 my_array)
;push number 2 into array
(vector - push 2 my_array)
;push number 3 into array
(vector - push 3 my_array)
;push number 4 into array
(vector - push 4 my_array)
;display (write my_array) ;pop 1 item
(vector - pop my_array)
(terpri) ;display array (write my_array) ;pop again 1 item
(vector - pop my_array)
(terpri) ;display array (write my_array) |
Output:
#() #(1 2 3 4) #(1 2 3) #(1 2)