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)