LISP - typy danych
W LISP zmienne nie są wpisywane, ale obiekty danych.
Typy danych LISP można podzielić na.
Scalar types - na przykład rodzaje liczb, znaki, symbole itp.
Data structures - na przykład listy, wektory, wektory bitowe i łańcuchy.
Każda zmienna może przyjąć dowolny obiekt LISP jako swoją wartość, chyba że zadeklarowałeś to jawnie.
Chociaż nie jest konieczne określanie typu danych dla zmiennej LISP, pomaga to jednak w pewnych ekspansjach pętli, w deklaracjach metod i innych sytuacjach, które omówimy w dalszych rozdziałach.
Typy danych są ułożone w hierarchię. Typ danych to zbiór obiektów LISP i wiele obiektów może należeć do jednego takiego zestawu.
Plik typep predykat służy do znajdowania, czy obiekt należy do określonego typu.
Plik type-of funkcja zwraca typ danych danego obiektu.
Specyfikatory typu w LISP
Specyfikatory typu to symbole zdefiniowane przez system dla typów danych.
szyk | fixnum | pakiet | prosty ciąg |
atom | pływak | nazwa ścieżki | prosty wektor |
bignum | funkcjonować | stan losowy | pojedynczy zmiennoprzecinkowy |
kawałek | tabela skrótów | stosunek | standard-char |
wektor bitowy | liczba całkowita | racjonalny | strumień |
postać | słowo kluczowe | czytelny | strunowy |
[wspólny] | lista | sekwencja | [string-char] |
funkcja skompilowana | długi pływak | short-float | symbol |
złożony | nill | bajt ze znakiem | t |
Cons | zero | prosta tablica | bajt bez znaku |
double-float | numer | prosty wektor bitowy | wektor |
Oprócz typów zdefiniowanych w systemie można tworzyć własne typy danych. Gdy typ konstrukcji jest zdefiniowany za pomocądefstruct funkcja, nazwa typu konstrukcji staje się poprawnym symbolem typu.
Przykład 1
Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.
(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)
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast, a zwrócony wynik to -
10
34.567
123.78
NIL
110000.0
62
Przykład 2
Następnie sprawdźmy typy zmiennych użytych w poprzednim przykładzie. Utwórz nowy plik kodu źródłowego o nazwie main. lisp i wpisz w nim następujący kod.
(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))
Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast, a zwrócony wynik to -
(INTEGER 0 281474976710655)
SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT
(INTEGER 0 281474976710655)