Учебники

ЛИСП — Операторы

Оператор — это символ, который указывает компилятору выполнять определенные математические или логические манипуляции. LISP допускает многочисленные операции с данными, поддерживаемые различными функциями, макросами и другими конструкциями.

Операции, разрешенные для данных, могут быть классифицированы как —

  • Арифметические операции
  • Операции сравнения
  • Логические Операции
  • Побитовые операции

Арифметические операции

В следующей таблице показаны все арифметические операторы, поддерживаемые LISP. Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —

Показать примеры

оператор Описание пример
+ Добавляет два операнда (+ AB) даст 30
Вычитает второй операнд из первого (- АБ) даст -10
* Умножает оба операнда (* AB) даст 200
/ Делит числитель на числитель (/ BA) даст 2
мод, рем Оператор модуля и остаток от целочисленного деления (мод БА) даст 0
INCF Оператор приращений увеличивает целочисленное значение на второй указанный аргумент (включая А 3) даст 13
DECF Оператор decrements уменьшает целочисленное значение на второй указанный аргумент (decf A 4) даст 9

Операции сравнения

Следующая таблица показывает все реляционные операторы, поддерживаемые LISP, который сравнивает числа. Однако, в отличие от реляционных операторов в других языках, операторы сравнения LISP могут принимать более двух операндов и работают только с числами.

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда —

Показать примеры

оператор Описание пример
знак равно Проверяет, равны ли все значения операндов или нет, если да, тогда условие становится истинным. (= AB) не соответствует действительности.
знак равно Проверяет, все ли значения операндов различны или нет, если значения не равны, условие становится истинным. (/ = AB) верно.
> Проверяет, монотонно ли уменьшаются значения операндов. (> AB) не соответствует действительности.
< Проверяет, монотонно ли увеличиваются значения операндов. (<AB) верно.
> = Проверяет, является ли значение любого левого операнда больше или равно значению следующего правого операнда, если да, тогда условие становится истинным. (> = AB) не соответствует действительности.
<= Проверяет, является ли значение любого левого операнда меньше или равно значению его правого операнда, если да, тогда условие становится истинным. (<= AB) верно.
Максимум Он сравнивает два или более аргумента и возвращает максимальное значение. (максимум AB) возвращает 20
мин Он сравнивает два или более аргумента и возвращает минимальное значение. (мин. АВ) возвращает 10

Логические операции над логическими значениями

Common LISP предоставляет три логических оператора: и, или, и не, который работает с логическими значениями. Предположим, что A имеет значение nil, а B имеет значение 5, тогда —

Показать примеры

оператор Описание пример
а также Требуется любое количество аргументов. Аргументы оцениваются слева направо. Если все аргументы имеют значение, отличное от nil, возвращается значение последнего аргумента. В противном случае возвращается ноль. (и AB) вернет NIL.
или же Требуется любое количество аргументов. Аргументы оцениваются слева направо до тех пор, пока один из них не станет нулевым, в этом случае возвращается значение аргумента, в противном случае возвращается ноль . (или AB) вернется 5.
не Он принимает один аргумент и возвращает t, если аргумент оценивается как ноль. (не А) вернет Т.

Побитовые операции над числами

Битовые операторы работают с битами и выполняют побитовые операции. Таблицы истинности для побитовых операций и, или, и операций xor следующие:

Показать примеры

п Q р и д р или д р х или д
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
Assume if A = 60; and B = 13; now in binary format they will be as follows:
A = 0011 1100
B = 0000 1101
-----------------
A and B = 0000 1100
A or B = 0011 1101
A xor B = 0011 0001
not A  = 1100 0011

Побитовые операторы, поддерживаемые LISP, перечислены в следующей таблице. Предположим, что переменная A содержит 60, а переменная B содержит 13, тогда —