F# Booleano

Come per tutti i linguaggi di programmazione anche in F# esiste il tipo booleano. Questo particolare tipo restituisce in uscita 2 stati, vero (true) o falso (false). Una funzione avente come codominio bool è chiamata predicato. In questo capitolo non entreremo in dettaglio sul tipo bool perché ci sono testi molto più esaurienti in materia e il tutto diventerebbe troppo discorsivo, a noi basta sapere che viene svolta una determinata operazione di valutazione tra 2 o più valori. Per esempio valuta se un numero è più grande rispetto ad un'altro e il risultato sarà l'espressione true o false.

Operazione Descrizione
= uguaglianza
<> disuguaglianza
< <= minore (minore uguale)
> (>=) maggiore (maggiore uguale)

Gli operatori di confronto non si applicano solo ai numeri ma a tutti i tipi, funzionano però solo tra tipi uguali quindi se provate a chiedere di fare un confronto tra "2" inteso come numero e il carattere "a" vi darà errore. Si possono anche usare su funzioni annidate purché sullo stesso tipo.

Qui di seguito ci sono gli operatori logici che funzionano proprio con gli operatori di confronto perché richiedono di confrontare lo stato true o false. Per esempio se confrontiamo 1 < 2 restituirà "true" e anche 0 < 1 restituirà "true", per confrontare questi 2 stati ci mettiamo in mezzo l'operatore logico "||" in maniera che confronti i 2 stati e restituisca "true". Tutti questi operatori combinati tra loro ci possono dire se delle determinate condizioni che ci interessano devono risultare vere o false.

Operazione Descrizione
not negazione
&& congiunzione
|| disgiunzione

Tabelle di verità

Queste tabelle mostrano il funzionamento degli operatori logici:

not True False
not False True
true && true true
true && false false
false && true false
false && false false
true || true true
true || false true
false || true true
false || false false

Il campo di utilizzo di questi operatori è molto vasto, ecco alcuni esempi di utilizzo:

1 < 4 ;;
val it : bool = true

let confronta x y = x < y ;;
val confronta : x:'a -> y:'a -> bool when 'a : comparison

confronta 6 2 ;;
val it : bool = false

2 = 3 && 5 < 8 ;;
val it : bool = false

(2 = 3 && 5 < 8) || (confronta 6 2) ;;
val it : bool = false

("testo" = "testo") || ("prova" > "provino") ;;
val it : bool = true