types - abs - Tipo de expresión Definir en Esquema
random racket (1)
Para decirlo simplemente: Mi pregunta es ¿cuál es el tipo de definición de expresión en Scheme?
Toma por ejemplo:
(define x 5)
o
(define x (lambda (n) (* n n)))
Es un poco confuso para mí. ¿Alguien puede ayudar?
En Racket define
es una forma especial y no una expresión, por lo que no tiene un valor per se, si intentas ejecutar algo como esto obtendrás un error:
(display (define x 42))
=> define: not allowed in an expression context in: (define x 42)
Si tuviera un valor, sería algo similar a void
, pero eso dependerá de los detalles particulares de implementación del intérprete (creo que vi un intérprete devolver #t
después de que se completara una define
)
La mayoría de las formas y procedimientos devuelven la constante
#<void>
que tienen un efecto secundario y ningún resultado útil
La especificación tampoco entra en detalles sobre este punto, lo que refuerza la afirmación de que depende de la implementación.