Il tipo Boolean di Scala, che corrisponde al tipo boolean di Java, ha due possibili valori, true e false, rappresentabili dai letterali true e false. Come in Java, le espressioni booleane sono composte:
true e false!bb && bb || be == e, e != e, e <= e, e >= e, e < e, e > e), applicabili a operandi di tipi uguali o compatibili (nel caso dei tipi di base, le regole di compatibilità sono analoghe a quelle di Java).Al fine di applicare il modello di sostituzione alle espressioni booleane, bisogna specificare le regole di riduzione (riscrittura) per gli operatori booleani, che sono le seguenti (dove b è un’arbitraria espressione booleana):

Si noti che nei casi (4) e (5) l’operando destro non viene valutato; questo comportamento, comune anche nei linguaggi imperativi, prende il nome di lazy evaluation o short-circuit evaluation.
In Scala esiste un costrutto if-else che esprime la scelta tra due alternative; esso ha una forma simile a quella di Java, ma invece che un’istruzione è un’espressione, chiamata espressione condizionale, che viene valutata e produce un valore. In particolare la sintassi di questo costrutto è
$$ \texttt{if (predicate) then-expr} $$
oppure
$$ \texttt{if (predicate) then-expr else else-expr} $$
dove:
predicate è un’espressione booleana (la condizione, che in ambito di programmazione funzionale viene più spesso chiamata predicato)then-expr e else-expr sono espressioni di tipi tra loro compatibiliIntuitivamente, il risultato della valutazione di un’espressione condizionale è il valore di then-expr se predicate ha valore true, mentre è il valroe di else-expr se predicate ha valore false. Cosa avvenga esattamente quando predicate è falso e non viene specificata la else-expr verrà spiegato più avanti, ma semplificando si potrebbe dire che l’espressione “non restituisce nulla”.
Un esempio di espressione condizionale è il corpo della seguente funzione, che calcola il valore assoluto di un numero intero