LISP - Tipos de datos

En LISP, las variables no se escriben, pero los objetos de datos sí.

Los tipos de datos LISP se pueden clasificar como.

  • Scalar types - por ejemplo, tipos de números, caracteres, símbolos, etc.

  • Data structures - por ejemplo, listas, vectores, vectores de bits y cadenas.

Cualquier variable puede tomar cualquier objeto LISP como su valor, a menos que lo haya declarado explícitamente.

Aunque no es necesario especificar un tipo de datos para una variable LISP, sin embargo, ayuda en ciertas expansiones de bucles, en declaraciones de métodos y en algunas otras situaciones que discutiremos en capítulos posteriores.

Los tipos de datos se organizan en una jerarquía. Un tipo de datos es un conjunto de objetos LISP y muchos objetos pueden pertenecer a uno de esos conjuntos.

los typep El predicado se utiliza para encontrar si un objeto pertenece a un tipo específico.

los type-of La función devuelve el tipo de datos de un objeto dado.

Especificadores de tipo en LISP

Los especificadores de tipo son símbolos definidos por el sistema para tipos de datos.

formación fixnum paquete cadena simple
átomo flotador nombre de ruta vector simple
bignum función estado aleatorio flotador simple
poco tabla de picadillo proporción carácter estándar
vector de bits entero racional corriente
personaje palabra clave readtable cuerda
[común] lista secuencia [string-char]
función-compilada flotar largo flotador corto símbolo
complejo cero byte firmado t
contras nulo matriz simple byte sin firmar
flotador doble número vector de bits simple vector

Aparte de estos tipos definidos por el sistema, puede crear sus propios tipos de datos. Cuando un tipo de estructura se define usandodefstruct función, el nombre del tipo de estructura se convierte en un símbolo de tipo válido.

Ejemplo 1

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

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

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

10 
34.567 
123.78 
NIL 
110000.0 
62

Ejemplo 2

A continuación, verifiquemos los tipos de variables utilizadas en el ejemplo anterior. Cree un nuevo archivo de código fuente llamado main. lisp y escriba el siguiente código en él.

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

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

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