LISP - Types de données

Dans LISP, les variables ne sont pas typées, mais les objets de données le sont.

Les types de données LISP peuvent être classés comme.

  • Scalar types - par exemple, types de nombres, caractères, symboles, etc.

  • Data structures - par exemple, des listes, des vecteurs, des vecteurs de bits et des chaînes.

Toute variable peut prendre n'importe quel objet LISP comme valeur, sauf si vous l'avez déclaré explicitement.

Bien qu'il ne soit pas nécessaire de spécifier un type de données pour une variable LISP, cela aide cependant dans certaines extensions de boucle, dans les déclarations de méthode et dans certaines autres situations que nous aborderons dans les chapitres suivants.

Les types de données sont organisés dans une hiérarchie. Un type de données est un ensemble d'objets LISP et de nombreux objets peuvent appartenir à un tel ensemble.

le typep prédicat est utilisé pour déterminer si un objet appartient à un type spécifique.

le type-of La fonction renvoie le type de données d'un objet donné.

Spécificateurs de type dans LISP

Les spécificateurs de type sont des symboles définis par le système pour les types de données.

tableau fixnum paquet chaîne simple
atome flotte chemin vecteur simple
bignum fonction état aléatoire flotteur simple
bit table de hachage rapport caractère standard
bit-vecteur entier rationnel courant
personnage mot-clé table de lecture chaîne
[commun] liste séquence [caractère-chaîne]
fonction-compilée long flotteur flotteur court symbole
complexe nill octet signé t
les inconvénients nul tableau simple octet non signé
double flotteur nombre vecteur-bit simple vecteur

En dehors de ces types définis par le système, vous pouvez créer vos propres types de données. Lorsqu'un type de structure est défini à l'aide dedefstruct fonction, le nom du type de structure devient un symbole de type valide.

Exemple 1

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)

(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est -

10 
34.567 
123.78 
NIL 
110000.0 
62

Exemple 2

Vérifions ensuite les types de variables utilisées dans l'exemple précédent. Créez un nouveau fichier de code source nommé main. lisp et tapez le code suivant dedans.

(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)

(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est -

(INTEGER 0 281474976710655) 
SINGLE-FLOAT 
SINGLE-FLOAT 
NULL 
SINGLE-FLOAT 
(INTEGER 0 281474976710655)