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 booleanos (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 booleanos, lo que significa que su primer argumento tiene que ser un valor booleano. También hay operadores booleanos equivalentes que funcionan con cualquier tipo de argumentos: &&/2, ||/2 y !/1.
Los operadores booleanos usan la 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 distinta, y 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 booleano, es idiomático terminar el nombre de la función con un ?. Se puede usar la misma convención para las variables que almacenan valores booleanos.
def either_true?(a?, b?) do
a? or b?
end