Atom es un símbolo, un carácter, un número o nulo.
(define (atom? a)
(or (symbol? a)
(char? a)
(number? a)
(null? a)))
Creo que esos son todos los átomos que existen, si encuentra más Agregar a la conditional expression
. Por ejemplo, si crees que una cadena es un átomo, agrega (cadena? A), :-). La ausencia de una definición de átomo le permite definirlo de la manera que desee. Después de todo, Scheme no sabe qué es un átomo.
En Lisp nil
es un átomo, así que he hecho null
un átomo. nil
es también una lista por simplificación nil = (nil . nil)
, del mismo modo que los números enteros son números racionales por simplificación, 2 = 2/1
, 2 es un número integral, 2/1 es un número racional, ya que ambos son iguales por simplificación del racional; uno dice que el número integral 2 también es un número racional. Pero el predicado de la lista ya está definido en Scheme, no hay nada de qué preocuparse.
Sobre la pregunta. Mientras me preocupe Scheme tiene predicados solo para tipos de clase, átomo no es un tipo de clase, átomo es una abstracción que incorpora varios tipos de clases. Quizás esa es la razón. Pero el par tampoco es un tipo de clase, pero no incorpora varios tipos de clase y, sin embargo, algunos pueden considerar el par como un tipo de clase.
Atom significa que cierta cosa no es algo compuesto. Una razón para no incluir dicho predicado es cuando el lenguaje le permite definir tipos atómicos, por lo que la pletora de átomos puede crecer más y más, y tal predicado no tendría sentido. No sé si Scheme lo permite. Solo puedo decir que los predicados de Scheme (los integrados) son todos específicos. Puedes preguntar, ¿es esto una manzana?, ¿Es esto una naranja?; pero no puedes preguntar ¿es esto una fruta?. :-). Bueno, puedes, si lo haces tú mismo. A pesar de lo dicho, Scheme tiene un predicado general number?
y predicados numéricos específicos, integer?
, rational?
, real?
; no obstante, el número se puede considerar como un tipo de clase (los otros predicados se refieren a subtipos de número), mientras que el átomo no lo es (al menos en Scheme).
Nota: tipos de clases: tipos que pertenecen a una determinada clase de cosas. Ejemplo:
número, entero, real, racional, carácter, procedimiento, lista, vector, hilo, etc.
Además de la curiosidad en general, hay una razón por la que iba a encontrar un uso para él? Un objeto es un átomo o un objeto compuesto, y normalmente estarías interesado en qué tipo de objeto compuesto, ¿verdad? –
Algunos esquemas vienen con varias cosas pequeñas como átomo? predefinido para su conveniencia. Por ejemplo, [Petite] Chez Scheme viene con la mayoría de las funciones triviales que esperarías existir. – erjiang