On peut prendre le contraire d'une expression booléenne avec l'opérateur NON. En Caml, c'est la fonction prédéfinie not
qui permet de faire cela. Ce mot se place devant l'expression booléenne dont on veut prendre la négation.
Ainsi not true
vaut false
et not false
vaut true
. On aurait pu définir cette fonction à la main en testant le paramètre b
: si b
est vrai, alors on renvoie faux, sinon c'est que b
est faux, et on renvoie donc vrai. Cela s'écrit :
let not b = if b then false else true in
Une autre manière d'écrire un code équivalent, tester si b
est égal à faux :
let not b = (b = false) in
Pour tester si un entier est impair, on peut donc tester s'il n'est pas pair :
let n = read_int() in if not (n mod 2 = 0) then print_string "impair" else print_string "pair";
Deuxième exemple, supposons que l'on ait déjà déclaré la fonction est_pair
:
let est_pair n = (n mod 2 = 0) in
alors à ce moment, on peut construire la fonction est_impair
en utilisant est_pair
:
let est_impair n = not (est_pair n) in
Résumé des opérateurs de calcul sur les expressions booléennes :
(expr1 && expr2)
est vraie uniquement lorsque les deux expressions sont vraies.(expr1 || expr2)
est vraie dès qu'une des deux expressions est vraie.(not expr1)
est vraie lorsque l'expression est fausse, et fausse lorsque l'expression est vraie.