Операции — это преобразования
Начнём с того, что все операции — это правила преобразования. Например, арифметические операторы берут числа и делают из них новое число:
А теперь — операторы сравнения. Они тоже берут числа, но порождают не число, а логическое значение:
Результат операций сравнения — значение типа bool.
Логические операции
Если операторы сравнения порождают bool, то логические операторы работают с уже готовыми логическими значениями:
Правила просты:
and(«И») —trueтолько если с обеих сторонtrue;or(«ИЛИ») —true, если хотя бы с одной стороныtrue;xor(«исключающее ИЛИ») —true, если только с одной стороныtrue.
Практическое применение: условия с 'and'
Перевод: «Если A больше 100 и B больше 100 — сообщить об этом».
Если хотя бы одно условие ложно — сообщение не появится.
Условия с 'or'
Перевод: «Если A больше 100 или B больше 100 (или обе больше 100) — сообщить об этом».
Сообщение не появится только тогда, когда оба условия ложны.
Условия с 'xor'
Перевод: «Если A больше 100 или B больше 100, но не оба — сообщить об этом».
Это как по-русски: «Либо одно, либо другое. Но не всё сразу».
Если обе переменные больше 100 — xor вернёт false, и сообщение не появится.
Операция 'not()' — инверсия
В Idyllium операция «НЕ» реализована как функция — not(выражение):
Это намеренное решение: скобки чётко показывают, что именно инвертируется. Никакой двусмысленности, как в других языках.
Аналогия с математикой
Функция not() работает как унарный минус в арифметике:
Точно так же:
not() переключает значение: true ↔ false, как минус переключает знак числа.
Почему 'not' — функция, а не оператор?
В том же Python можно написать:
И даже опытные программисты не всегда сразу вспомнят приоритеты.
В Idyllium этого не бывает:
Скобки — это не формальность. Это гарантия ясности. Idyllium не заставляет вас запоминать таблицы приоритетов — он заставляет чётко выражать мысли.