Les nombres réels sont totalement ordonnés. Les opérations de comparaison permettent de tester l'ordre entre deux ou plusieurs nombres. Les nombres complexes ne sont pas totalement ordonnés, mais les tests d'égalité et inégalité existent.
Voici les opérations de comparaison en Common Lisp :
nom | fonction |
= | égal |
/= | inégal |
< | inférieur |
<= | inférieur ou égal |
> | supérieur |
>= | supérieur ou égal |
Contrairement à d'autres langages qui exigent exactement deux opérandes pour ces opérations, Common Lisp généralise ces opérations à un nombre arbitraire (supérieur à zéro) d'opérandes.
Voici la définition de ces opérations :
nom | fonction |
= | vrai si et seulement si tous les opérandes sont égaux |
/= | vrai si et seulement si tous les opérandes sont différents |
< | vrai si et seulement si les opérandes sont strictement croissants |
<= | vrai si et seulement si les opérandes sont croissants |
> | vrai si et seulement si les opérandes sont strictement décroissants |
>= | vrai si et seulement si les opérandes sont décroissants |
Par définition, l'ensemble de ces opérations donne vrai si un seul argument a été fourni. Exemples :
* (= 1.0)
T
* (= 1.0 1)
T
* (= 1.0 2.0)
NIL
* (= 4/2 2 #c(2.0 0))
T
* (< 1/3 0.5 3/2 1.04)
NIL
* (< 1/3 0.5 3/2 1.9)
T
* (> 12 14/2 7 1/5 0.002)
NIL
* (> 12 15/2 7 1/5 0.002)
T
* (> 12 14/2 7 1/5 0.002)
NIL
* (>= 12 14/2 7 1/5 0.002)
T
*
Alors que d'autres langages traitent les opérateurs de comparaison comme éléments syntaxiques spéciaux, en Common Lisp il s'agit de fonctions normales dont les noms sont les symboles =, /=, <, <=, > et >=. Ceci est important, car il devient alors possible de passer l'une de ces fonctions en argument à d'autres fonctions (voir chapitre 7).