Elixir représente les valeurs vrai et faux avec le type booléen. Il n'existe que deux valeurs : true et false. Ces valeurs peuvent être combinées avec des opérateurs booléens (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
Les opérateurs and/2, or/2 et not/1 sont strictement booléens, ce qui signifie qu'ils exigent que leur premier argument soit un booléen. Il existe aussi des opérateurs booléens équivalents qui fonctionnent avec tout type d'arguments : &&/2, ||/2 et !/1.
Les opérateurs booléens utilisent une évaluation en court-circuit, ce qui signifie que l'expression à droite de l'opérateur n'est évaluée que si c'est nécessaire.
Chaque opérateur a une précédence différente : not/1 est évalué avant and/2 et or/2. On peut utiliser des parenthèses pour évaluer une partie de l'expression avant les autres :
not true and false
# => false
not (true and false)
# => true
Quand on écrit une fonction qui renvoie une valeur booléenne, il est idiomatique de terminer le nom de la fonction par un ?. La même convention peut s'appliquer aux variables qui stockent des valeurs booléennes.
def either_true?(a?, b?) do
a? or b?
end