LISP - Tipos de Dados
No LISP, as variáveis não são digitadas, mas os objetos de dados sim.
Os tipos de dados LISP podem ser categorizados como.
Scalar types - por exemplo, tipos de números, caracteres, símbolos etc.
Data structures - por exemplo, listas, vetores, vetores de bits e strings.
Qualquer variável pode receber qualquer objeto LISP como seu valor, a menos que você o tenha declarado explicitamente.
Embora não seja necessário especificar um tipo de dados para uma variável LISP, no entanto, isso ajuda em certas expansões de loop, em declarações de método e algumas outras situações que discutiremos em capítulos posteriores.
Os tipos de dados são organizados em uma hierarquia. Um tipo de dados é um conjunto de objetos LISP e muitos objetos podem pertencer a um desses conjuntos.
o typep predicado é usado para descobrir se um objeto pertence a um tipo específico.
o type-of função retorna o tipo de dados de um determinado objeto.
Especificadores de tipo em LISP
Especificadores de tipo são símbolos definidos pelo sistema para tipos de dados.
matriz | fixnum | pacote | string simples |
átomo | flutuador | nome do caminho | vetor simples |
bignum | função | estado aleatório | flutuação única |
mordeu | mesa de hash | Razão | standard-char |
vetor de bits | inteiro | racional | corrente |
personagem | palavra chave | legível | corda |
[comum] | Lista | seqüência | [string-char] |
função compilada | flutuação longa | flutuação curta | símbolo |
complexo | nada | byte assinado | t |
contras | nulo | array simples | byte sem sinal |
flutuação dupla | número | vetor de bit simples | vetor |
Além desses tipos definidos pelo sistema, você pode criar seus próprios tipos de dados. Quando um tipo de estrutura é definido usandodefstruct função, o nome do tipo de estrutura torna-se um símbolo de tipo válido.
Exemplo 1
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(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 você clica no botão Executar, ou digita Ctrl + E, o LISP executa imediatamente e o resultado retornado é -
10
34.567
123.78
NIL
110000.0
62
Exemplo 2
A seguir, vamos verificar os tipos de variáveis usadas no exemplo anterior. Crie um novo arquivo de código-fonte denominado main. lisp e digite o seguinte código nele.
(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 você clica no botão Executar, ou digita Ctrl + E, o LISP executa imediatamente e o resultado retornado é -
(INTEGER 0 281474976710655)
SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT
(INTEGER 0 281474976710655)