Ejercicio 1.5. Ben Bitdiddle ha inventado una prueba para determinar si el intérprete al que se enfrenta está usando la evaluación del pedido aplicativo o la evaluación de orden normal. Se define las siguientes dos procedimientos:SICP Ejercicio 1.5
(definir (p) (p))
(definir (xy test) (si (= x 0) y))
Luego evalúa la expresión
(prueba 0 (p))
¿Qué comportamiento se observa Ben con un intérprete que utiliza evaluación de orden aplicativo? ¿Qué comportamiento observará con un intérprete que utiliza la evaluación de orden normal?
Entiendo la respuesta al ejercicio; mi pregunta radica en cómo (p) se interpreta frente a p. Por ejemplo, (prueba 0 (p)) hace que el intérprete cuelgue (lo que se espera), pero (prueba 0 p) con la definición anterior evalúa inmediatamente a 0. ¿Por qué?
Además, supongamos que hemos cambiado la definición a (define (p) p). Con la definición dada, (prueba 0 (p)) y (prueba 0 p) ambos evalúan a 0. ¿Por qué ocurre esto? ¿Por qué no cuelga el intérprete? Estoy usando al Dr. Racket con el paquete SICP.
+1 respuesta sucinta. Pruebe también con http://codepad.org. –
Gracias. Yo también estoy buscando la respuesta. – user1166240