LISP - Opérateurs

Un opérateur est un symbole qui indique au compilateur d'effectuer des manipulations mathématiques ou logiques spécifiques. LISP permet de nombreuses opérations sur les données, supportées par diverses fonctions, macros et autres constructions.

Les opérations autorisées sur les données peuvent être classées comme suit:

  • Opérations arithmétiques
  • Opérations de comparaison
  • Opérations logiques
  • Opérations au niveau du bit

Opérations arithmétiques

Le tableau suivant présente tous les opérateurs arithmétiques pris en charge par LISP. Supposons une variableA détient 10 et variable B détient 20 alors -

Show Examples

Opérateur La description Exemple
+ Ajoute deux opérandes (+ AB) donnera 30
- Soustrait le deuxième opérande du premier (- AB) donnera -10
* Multiplie les deux opérandes (* AB) donnera 200
/ Divise le numérateur par le dénumérateur (/ BA) donnera 2
mod, rem Opérateur de module et reste après une division entière (mod BA) donnera 0
incf L'opérateur Increments augmente la valeur entière du deuxième argument spécifié (incf A 3) donnera 13
décf Décrémente l'opérateur diminue la valeur entière du deuxième argument spécifié (decf A 4) donnera 9

Opérations de comparaison

Le tableau suivant montre tous les opérateurs relationnels pris en charge par LISP qui compare les nombres. Cependant, contrairement aux opérateurs relationnels dans d'autres langues, les opérateurs de comparaison LISP peuvent prendre plus de deux opérandes et ils ne fonctionnent que sur des nombres.

Supposons une variable A détient 10 et variable B détient 20, alors -

Show Examples

Opérateur La description Exemple
= Vérifie si les valeurs des opérandes sont toutes égales ou non, si oui, la condition devient vraie. (= AB) n'est pas vrai.
/ = Vérifie si les valeurs des opérandes sont toutes différentes ou non, si les valeurs ne sont pas égales, la condition devient vraie. (/ = AB) est vrai.
> Vérifie si les valeurs des opérandes décroissent de manière monotone. (> AB) n'est pas vrai.
< Vérifie si les valeurs des opérandes augmentent de manière monotone. (<AB) est vrai.
> = Vérifie si la valeur d'un opérande gauche est supérieure ou égale à la valeur de l'opérande droit suivant, si oui, la condition devient vraie. (> = AB) n'est pas vrai.
<= Vérifie si la valeur d'un opérande gauche est inférieure ou égale à la valeur de son opérande droit, si oui, la condition devient vraie. (<= AB) est vrai.
max Il compare deux ou plusieurs arguments et renvoie la valeur maximale. (max AB) renvoie 20
min Il compare deux ou plusieurs arguments et renvoie la valeur minimale. (min AB) renvoie 10

Opérations logiques sur les valeurs booléennes

Common LISP fournit trois opérateurs logiques: and, or, et notqui fonctionne sur des valeurs booléennes. PrésumerA a une valeur nulle et B a la valeur 5, alors -

Show Examples

Opérateur La description Exemple
et Cela prend n'importe quel nombre d'arguments. Les arguments sont évalués de gauche à droite. Si tous les arguments ont une valeur non nulle, la valeur du dernier argument est renvoyée. Sinon, rien n'est retourné. (et AB) renverra NIL.
ou Cela prend n'importe quel nombre d'arguments. Les arguments sont évalués de gauche à droite jusqu'à ce que l'on évalue non nul, dans ce cas la valeur de l'argument est retournée, sinon elle retournenil. (ou AB) renverra 5.
ne pas Il prend un argument et retourne t si l'argument est évalué à nil. (pas A) retournera T.

Opérations au niveau du bit sur les nombres

Les opérateurs au niveau du bit travaillent sur les bits et effectuent des opérations bit par bit. Les tables de vérité pour les opérations binaires et, ou et xor sont les suivantes:

Show Examples

p q p et q p ou q p xor q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
Assume if A = 60; and B = 13; now in binary format they will be as follows:
A = 0011 1100
B = 0000 1101
-----------------
A and B = 0000 1100
A or B = 0011 1101
A xor B = 0011 0001
not A  = 1100 0011

Les opérateurs Bitwise pris en charge par LISP sont répertoriés dans le tableau suivant. Supposons une variableA détient 60 et variable B détient 13, alors -

Opérateur La description Exemple
logand Cela renvoie le ET logique par bit de ses arguments. Si aucun argument n'est donné, le résultat est -1, qui est une identité pour cette opération. (logand ab)) donnera 12
logior Cela renvoie le OU INCLUSIF logique par bit de ses arguments. Si aucun argument n'est donné, le résultat est zéro, qui est une identité pour cette opération. (logior ab) donnera 61
logxor Ceci renvoie le OU EXCLUSIF logique par bit de ses arguments. Si aucun argument n'est donné, le résultat est zéro, qui est une identité pour cette opération. (logxor ab) donnera 49
lognor Cela renvoie le PAS bit par bit de ses arguments. Si aucun argument n'est donné, le résultat est -1, qui est une identité pour cette opération. (lognor ab) donnera -62,
logeqv Cela renvoie l'ÉQUIVALENCE logique bit par bit (également appelée ni exclusif) de ses arguments. Si aucun argument n'est donné, le résultat est -1, qui est une identité pour cette opération. (logeqv ab) donnera -50