abs types scheme racket

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.