Elixir rappresenta i valori vero e falso con il tipo booleano. Esistono solo due valori: true e false. Questi valori possono essere combinati con gli operatori booleani (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
Gli operatori and/2, or/2 e not/1 sono strettamente booleani, il che significa che richiedono che il loro primo argomento sia un booleano. Esistono anche operatori booleani equivalenti che funzionano con qualsiasi tipo di argomento: &&/2, ||/2 e !/1.
Gli operatori booleani usano la valutazione a cortocircuito, il che significa che l'espressione a destra dell'operatore viene valutata solo se necessario.
Ogni operatore ha una precedenza diversa: not/1 viene valutato prima di and/2 e or/2. Le parentesi possono essere usate per valutare una parte dell'espressione prima delle altre:
not true and false
# => false
not (true and false)
# => true
Quando si scrive una funzione che restituisce un valore booleano, è idiomatico terminare il nome della funzione con un ?. La stessa convenzione può essere usata per le variabili che memorizzano valori booleani.
def either_true?(a?, b?) do
a? or b?
end