В LISP каждая переменная представлена символом . Имя переменной — это имя символа, и оно хранится в ячейке памяти символа.
Глобальные переменные
Глобальные переменные имеют постоянные значения во всей системе LISP и действуют до тех пор, пока не будет указано новое значение.
Глобальные переменные обычно объявляются с использованием конструкции defvar .
Например
(defvar x 234) (write x)
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет ее немедленно, и возвращаемый результат
234
Поскольку в LISP отсутствует объявление типа для переменных, вы непосредственно указываете значение для символа с помощью конструкции setq .
Например
->(setq x 10)
Вышеприведенное выражение присваивает значение 10 переменной x. Вы можете ссылаться на переменную, используя сам символ в качестве выражения.
Функция символ-значение позволяет извлечь значение, хранящееся в месте хранения символа.
Например
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(setq x 10) (setq y 20) (format t "x = ~2d y = ~2d ~%" x y) (setq x 100) (setq y 200) (format t "x = ~2d y = ~2d" x y)
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.
x = 10 y = 20 x = 100 y = 200
Локальные переменные
Локальные переменные определяются в рамках данной процедуры. Параметры, названные в качестве аргументов в определении функции, также являются локальными переменными. Локальные переменные доступны только внутри соответствующей функции.
Как и глобальные переменные, локальные переменные также могут быть созданы с помощью конструкции setq .
Есть две другие конструкции — let и prog для создания локальных переменных.
Конструкция let имеет следующий синтаксис.
(let ((var1 val1) (var2 val2).. (varn valn))<s-expressions>)
Где var1, var2, ..varn — имена переменных, а val1, val2, .. valn — начальные значения, присвоенные соответствующим переменным.
Когда выполняется let , каждой переменной присваивается соответствующее значение и, наконец, вычисляется s-выражение . Возвращается значение последнего оцененного выражения.
Если вы не включили начальное значение для переменной, оно присваивается nil.
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(let ((x 'a) (y 'b)(z 'c)) (format t "x = ~a y = ~a z = ~a" x y z))
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.
x = A y = B z = C
Конструкция prog также имеет список локальных переменных в качестве первого аргумента, за которым следует тело prog и любое количество s-выражений.
Функция prog выполняет список s-выражений в последовательности и возвращает nil, если не встречает вызов функции с именем return. Затем аргумент функции возврата оценивается и возвращается.
пример
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10))) (format t "x = ~a y = ~a z = ~a" x y z))
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат.