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)