Tipos de datos en LISP

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:

  1. Tipos escalares
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *