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)