Elixir представляє значення правди і неправди булевим типом (англ. Boolean). Є лише два значення: true і false. Ці значення можна поєднувати булевими операторами (and/2, or/2, not/1):
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
Оператори and/2, or/2 та not/1 є строго булевими, тобто вимагають, щоб їхній перший аргумент був булевим значенням. Існують також рівнозначні булеві оператори, які працюють з аргументами будь-якого типу: &&/2, ||/2 та !/1.
Булеві оператори використовують обчислення з коротким замиканням: вираз праворуч від оператора обчислюється лише за потреби.
Кожен з операторів має свій пріоритет: not/1 обчислюється раніше за and/2 та or/2. Дужки можна використати, щоб обчислити одну частину виразу раніше за інші:
not true and false
# => false
not (true and false)
# => true
Коли ми пишемо функцію, що повертає булеве значення, прийнято завершувати її назву знаком ?. Ту саму домовленість можна застосувати й до змінних, які зберігають булеві значення.
def either_true?(a?, b?) do
a? or b?
end