Эта страница — краткий справочник по встроенным операторам. Примечание: только #f — ложное значение; пустой список () — истинное. Результаты логики записываются как #t/#f.
Арифметические операторы
Эти операторы выполняют стандартные математические вычисления.
+ (Сложение)
Суммирует два или более числа.
- Без аргументов возвращает
0. - С одним аргументом возвращает сам аргумент.
(+ 10 20 5) ;; Результат: 35
(+ 10) ;; Результат: 10
(+) ;; Результат: 0
- (Вычитание)
С одним аргументом изменяет знак числа на противоположный. С двумя или более — вычитает последующие числа из первого.
(- 100 20 10) ;; Результат: 70
(- 10) ;; Результат: -10
* (Умножение)
Перемножает два или более числа.
- Без аргументов возвращает
1. - С одним аргументом возвращает сам аргумент.
(* 5 10 2) ;; Результат: 100
(* 7) ;; Результат: 7
(*) ;; Результат: 1
/ (Деление)
Делит первое число на последующие. Выбрасывает ошибку при делении на ноль.
(/ 100 5 2) ;; Результат: 10
modulo (остаток от деления)
Возвращает остаток от деления первого числа на второе. Требует ровно два аргумента.
Псевдоним: % (не рекомендуется; предпочитайте modulo, предупреждение W330).
(modulo 10 3) ;; Результат: 1
Операторы сравнения
Эти операторы сравнивают значения и возвращают #t или #f.
=, == (Равно)
Проверяет, равны ли два значения. Для списков выполняет глубокое рекурсивное сравнение их элементов. == является псевдонимом для =.
(= 10 10) ;; Результат: #t
(= "hello" "world") ;; Результат: #f
(= (list 1 2) (list 1 2)) ;; Результат: #t
!= (Не равно)
Проверяет, не равны ли два значения. Является противоположностью =.
(!= 10 5) ;; Результат: #t
(!= (list 1 2) (list 1 2)) ;; Результат: #f
> (Больше)
Проверяет, больше ли первое число, чем второе.
(> 10 5) ;; Результат: #t
< (Меньше)
Проверяет, меньше ли первое число, чем второе.
(< 10 5) ;; Результат: #f
>= (Больше или равно)
Проверяет, больше ли первое число или равно второму.
(>= 10 10) ;; Результат: #t
<= (Меньше или равно)
Проверяет, меньше ли первое число или равно второму.
(<= 10 5) ;; Результат: #f
Логические операторы
Эти операторы работают с булевой логикой и используют сокращённое вычисление.
and
Возвращает #f, как только встречает #f. Если все значения истинны (всё, что не #f), возвращает последнее значение.
(and #t #t) ;; Результат: #t
(and #t #f 10) ;; Результат: #f (останавливается на #f)
or
Возвращает первое истинное значение. Если все значения — #f, возвращает #f.
(or #f 10 #t) ;; Результат: 10 (останавливается на 10)
(or #f #f) ;; Результат: #f
not
Возвращает противоположное логическое значение: для #f — #t, иначе — #f.
(not #t) ;; Результат: #f
(not #f) ;; Результат: #t
(not 0) ;; Результат: #f (0 — истинное значение)