Un tipo de datos es básicamente una colección de valores que tienen el mismo tipo. También podemos decir que en lisp, cada objeto pertenece a un tipo de datos. Un objeto en lisp es un dato que es usado y manipulado por el código lisp.
LISP proporciona varios tipos de datos, y los tipos de datos de uso común son array, número, string, flotante, flujo, vector, etc. Podemos clasificar estos tipos de datos en dos categorías:
- Tipos escalares
- Estructuras de datos
Los tipos escalares son los tipos de datos que se utilizan para almacenar valores únicos. Los tipos escalares son number, float, stream, etc.
Las estructuras de datos son los tipos de datos que se utilizan para almacenar múltiples valores. Las estructuras de datos son array, vector, etc.
En lisp, los datos son un conjunto de objetos lisp. Un objeto lisp puede pertenecer a más de un tipo de datos. Y si queremos averiguar si un objeto pertenece a un tipo de datos, podemos usar la función typeep . Comprobará si un objeto pertenece a un tipo de datos específico.
Y para averiguar el tipo de datos de un objeto dado, podemos usar la función typeof . La función typeof devuelve el tipo de datos del objeto.
En lisp, un conjunto de objetos se muestra con un símbolo t y ningún objeto o tipo de datos vacío se representa con nil.
Especificadores de tipo en LISP.
Los especificadores de tipo son los objetos lisp como nombres o símbolos que se utilizan para identificar el tipo de datos del objeto. En LISP, las variables no son especificadores de tipo porque las variables no se escriben. Estos son los tipos definidos por el sistema que podemos usar en la lista.
formación | átomo | número grande | un poco |
bit-vector | personaje | [común] | función compilada |
complejo | contras | flotador doble | número fijo |
flotar | función | tabla de picadillo | entero |
palabra clave | lista | flotación larga | cero |
nulo | número | paquete | nombre de ruta |
estado aleatorio | relación | racional | legible |
secuencia | flotación corta | byte firmado | array simple |
simple-bit-vector | string simple | vector simple | flotador simple |
estándar-char | corriente | cuerda | [string-char] |
símbolo | t | byte sin firmar | vector |
También podemos crear nuestros propios tipos de datos personalizados definidos por el usuario. Para hacerlo, tenemos que usar la función defstruct . Los símbolos definidos usando defstruct se convierten en símbolos válidos.
Aprendamos sobre algunos tipos de datos de uso común en LISP. A continuación se muestran los tipos de datos y sus correspondientes especificadores de tipo.
1. Números: los números se utilizan para almacenar los valores enteros y de punto flotante. Los números están representados por el símbolo número. Lisp tiene dos tipos de números: enteros y de coma flotante. Un número de punto flotante es un número con un punto decimal. Un entero es un número entero sin punto decimal. Lisp también proporciona números complejos cartesianos.
Ejemplo:
Lisp
;; Numbers in LISP (setq a 1) ;; a is a number (setq b 2.0) ;; b is a floating point number (setq c 4.0e2) ;; c is a floating point number (setq d (complex 1 2)) ;; d is a complex number (print "a is " a) ;; a is 1 (print "b is " b) ;; b is 2.0 (print "c is " c) ;; c is 400.0 (print "d is " d) ;; d is (1.0+2.0i)
Producción:
a is 1 b is 2.0 c is 400.0 d is (1.0+2.0i)
Aquí, el complejo es el especificador de tipo para números complejos.
2. Caracteres: los caracteres se utilizan para almacenar valores de un solo carácter. Los caracteres se pueden utilizar para representar un solo carácter. Y un grupo de uno o más caracteres se puede representar mediante una string. Una string es una secuencia de caracteres, es una array unidimensional de caracteres.
Ejemplo:
Lisp
;; characters in LISP (setq a ?c) ;; a is a character (setq b "GeeksforGeeks") ;; b is a string (print "a is " a) ;; a is c (print "b is " b) ;; b is GeeksforGeeks
Producción:
a is c b is GeeksforGeeks
3. Arrays : las arrays se utilizan para almacenar múltiples valores. Los arreglos son una colección de objetos en lisp. Las arrays se pueden indexar por números enteros. Eso significa que se puede acceder a una array utilizando el índice de la array. Pero la array debe tener un número no negativo de dimensiones. Los vectores también se denominan arrays unidimensionales. A puede almacenar cualquier tipo de tipo de datos. Las strings se denominan arrays unidimensionales de caracteres. Los vectores de bits también se denominan arrays unidimensionales de bits. Los vectores de bits solo almacenan 0 o 1.
Ejemplo:
Lisp
;; Arrays in LISP (setq a (array 1 2 3 4 5)) ;; a is an array (setq v (vector 1 2 3 4 5)) ;; v is a vector (setq b (bitvector 0 1 0 1 1)) ;; b is a bit vector (setq s (string "Geeks")) ;; s is a string (print "a is " a) ;; a is [1 2 3 4 5] (print "v is " v) ;; v is [1 2 3 4 5] (print "b is " b) ;; b is [0 1 0 1 1] (print "s is " s) ;; s is Geeks
Producción:
a is [1 2 3 4 5] v is [1 2 3 4 5] b is [0 1 0 1 1] s is Geeks
Aquí, la palabra vector es un especificador de tipo para vectores. La palabra array es un especificador de tipo para arrays. La palabra vector de bits es el especificador de tipo para los vectores de bits. La palabra string es un especificador de tipo para strings.
Publicación traducida automáticamente
Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA