Elixir representa los valores verdadero y falso con el tipo Boolean. Solo hay dos valores: true y false. Estos valores se pueden combinar con 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
Los operadores and/2, or/2 y not/1 son estrictamente Boolean, lo que significa que requieren que su primer argumento sea un Boolean. También existen operadores Boolean equivalentes que funcionan con cualquier tipo de argumento: &&/2, ||/2 y !/1.
Los operadores Boolean usan evaluación de cortocircuito, lo que significa que la expresión del lado derecho del operador solo se evalúa si es necesario.
Cada uno de los operadores tiene una precedencia diferente, donde not/1 se evalúa antes que and/2 y or/2. Se pueden usar paréntesis para evaluar una parte de la expresión antes que las demás:
not true and false
# => false
not (true and false)
# => true
Cuando escribes una función que devuelve un valor Boolean, es idiomático terminar el nombre de la función con un ?. La misma convención se puede usar para las variables que almacenan valores Boolean.
def either_true?(a?, b?) do
a? or b?
end