Atom jest albo symbol, znak, numer, lub wartość null.
(define (atom? a)
(or (symbol? a)
(char? a)
(number? a)
(null? a)))
Myślę, że te są wszystkie atomy, które istnieją, jeśli znajdziesz więcej dodaj do conditional expression
. Na przykład, jeśli uważasz, że ciąg jest atomem, dodaj (ciąg? A), :-). Brak definicji atomu, pozwala zdefiniować go tak, jak chcesz. Przecież Schemat nie wie, czym jest atom.
W języku Lisp nil
jest atomem, więc utworzyłem null
atom. nil
jest również listą przez uproszczenie nil = (nil . nil)
, w ten sam sposób, w jaki liczby całkowite są liczbami wymiernymi przez uproszczenie, 2 = 2/1
, 2 jest liczbą całkowitą, 2/1 jest liczbą wymierną, ponieważ oba są równe przez uproszczenie racjonalnego; jeden mówi, że liczba całkowita 2 jest również liczbą wymierną. Ale predykat listy jest już zdefiniowany w Scheme, nie ma się czym martwić.
O pytanie. Tak długo, jak mnie to obchodzi Schemat ma predykaty tylko dla typów klas, atom nie jest typem klasy, atom to abstrakcja, która zawiera kilka typów klas. Może to jest powód. Ale para nie jest również typem klasy, ale nie zawiera kilku typów klas, a niektóre mogą traktować parę jako typ klasy.
Atom oznacza, że pewne rzeczy nie są złożone. Jednym z powodów, aby nie uwzględniać takiego predykatu, jest to, kiedy język pozwala na definiowanie typów atomowych, więc liczba atomów może rosnąć coraz szerzej, a takie orzeczenie nie ma sensu. Nie wiem, czy Scheme na to pozwala. Mogę tylko powiedzieć, że schematy predykatów (te wbudowane) są specyficzne. Możesz zapytać: czy to jest jabłko?, to jest pomarańczowy?; ale nie możesz zapytać: czy to jest owoc?. :-). Cóż, możesz, jeśli zrobisz to sam. Pomimo tego, co powiedziano, Scheme ma ogólny predykat number?
i predykaty specyficzne dla liczb, integer?
, rational?
, real?
; niezależnie od tego liczba może być uważana za typ klasy (inne predykaty odnoszą się do podtypów liczby), podczas gdy atom nie jest (przynajmniej na Schemacie).
Uwaga: typy klas: rodzaje, które należą do pewnej klasy rzeczy. Przykład:
numer, całkowita, rzeczywista, racjonalne, charakter, procedura, lista, wektor, łańcuch, itp
oprócz ogólnej ciekawości, czy istnieje powód, by znaleźć zastosowanie dla niego? Obiekt jest albo atomem, albo obiektem złożonym, a zwykle interesuje Cię rodzaj obiektu złożonego, prawda? –
Niektóre schematy pochodzą z różnych małych rzeczy, takich jak atom? predefiniowane dla Twojej wygody. Na przykład, [Petite] Chez Scheme ma najbardziej trywialne funkcje, które można by oczekiwać. – erjiang