O Elixir representa os valores true e false com o tipo Boolean. Existem apenas dois valores: true e false. Esses valores podem ser combinados com operadores Boolean (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
Os operadores and/2, or/2 e not/1 são estritamente Boolean, ou seja, exigem que o primeiro argumento seja Boolean. Existem também operadores Boolean equivalentes que funcionam com qualquer tipo de argumento: &&/2, ||/2 e !/1.
Os operadores Boolean usam avaliação de curto-circuito, o que significa que a expressão do lado direito do operador só é avaliada se for necessário.
Cada um dos operadores tem uma precedência diferente, e not/1 é avaliado antes de and/2 e or/2. É possível usar parênteses para avaliar uma parte da expressão antes das outras:
not true and false
# => false
not (true and false)
# => true
Ao escrever uma função que retorna um valor Boolean, é idiomático terminar o nome da função com um ?. A mesma convenção pode ser usada para variáveis que armazenam valores Boolean.
def either_true?(a?, b?) do
a? or b?
end