LISP - Tipi di dati

In LISP, le variabili non vengono digitate, ma gli oggetti dati lo sono.

I tipi di dati LISP possono essere classificati come.

  • Scalar types - ad esempio, tipi di numeri, caratteri, simboli ecc.

  • Data structures - ad esempio, elenchi, vettori, vettori di bit e stringhe.

Qualsiasi variabile può prendere qualsiasi oggetto LISP come valore, a meno che tu non lo abbia dichiarato esplicitamente.

Sebbene non sia necessario specificare un tipo di dati per una variabile LISP, tuttavia, aiuta in certe espansioni di loop, nelle dichiarazioni di metodi e in alcune altre situazioni che discuteremo nei capitoli successivi.

I tipi di dati sono organizzati in una gerarchia. Un tipo di dati è un insieme di oggetti LISP e molti oggetti possono appartenere a uno di questi set.

Il typep predicato viene utilizzato per determinare se un oggetto appartiene a un tipo specifico.

Il type-of funzione restituisce il tipo di dati di un dato oggetto.

Specificatori di tipo in LISP

Gli identificatori di tipo sono simboli definiti dal sistema per i tipi di dati.

Vettore fixnum pacchetto stringa semplice
atomo galleggiante nome del percorso vettore semplice
bignum funzione stato casuale galleggiante singolo
po tabella hash rapporto carattere standard
bit-vettore numero intero razionale ruscello
personaggio parola chiave leggibile corda
[Comune] elenco sequenza [string-char]
funzione compilata long-float galleggiante corto simbolo
complesso nulla byte con segno t
contro nullo array semplice byte senza segno
doppio galleggiante numero vettore di bit semplice vettore

Oltre a questi tipi definiti dal sistema, è possibile creare i propri tipi di dati. Quando un tipo di struttura viene definito utilizzandodefstruct funzione, il nome del tipo di struttura diventa un simbolo di tipo valido.

Esempio 1

Crea un nuovo file di codice sorgente denominato main.lisp e digita il codice seguente.

(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)

Quando fai clic sul pulsante Esegui o digiti Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è -

10 
34.567 
123.78 
NIL 
110000.0 
62

Esempio 2

Successivamente controlliamo i tipi di variabili utilizzate nell'esempio precedente. Crea un nuovo file di codice sorgente denominato main. lisp e digita il codice seguente.

(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))

Quando fai clic sul pulsante Esegui o digiti Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è -

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