Le type booléen ne peut avoir que deux valeurs dont les formes littérales sont TRUE pour vrai et FALSE pour faux.
(define 'x TRUE) # On assigne une valeur booléenne "vrai" à x.
On note que la forme littérale consiste à utiliser les symboles TRUE ou FALSE en fonction de la valeur souhaitée. On réutilise toujours les mêmes identités. Il n'y a donc qu'une seule instance de TRUE et une seule instance de FALSE en mémoire. Ainsi, le test identitaire des valeurs booléennes est toujours fiable.
(display (==? TRUE TRUE)) (display (==? TRUE FALSE)) (display (==? FALSE FALSE)) (display (==? FALSE TRUE))
⇒
TRUE FALSE TRUE FALSE
Cette caractéristique permet aussi d'optimiser les performances et l'utilisation de la mémoire.
On peut vérifier le type d'une donnée pour s'assurer qu'il s'agit d'un booléen à l'aide du prédicat boolean?.
(display (boolean? "toto")) (display (boolean? FALSE))
⇒
FALSE TRUE
Comme on peut le constater dans les exemples qui précèdent, les prédicats retournent généralement un résultat du type booléen et ceux-ci peuvent facilement être combinés au moyens des opérateurs logiques habituels comme or, and, xor et not.
(display (and (or FALSE TRUE) (not FALSE)))
⇒
TRUE
Enfin, il est aussi important de retenir qu'il est possible de convertir n'importe quel type de donnée en booléen en fonction de sa «valeur de vérité». pour cela, il suffit d'utiliser le prédicat truth?.
(display (truth? 0)) (display (truth? 25.0)) # toutes valeur différente de zéro correspond à "vrai"
⇒
FALSE TRUE
C'est d'ailleurs cette «valeur de vérité» qui est testée dans les opérateurs de contrôle du flux d'exécution.
(define 'x "des caractères") (if{x} {display "x contient des caractères."} else {display "x est une chaîne de caractères vide."})
⇒
x contient des caractères.