Pregunta
El siguiente es un ejercicio de SICP. No pude resolverlo por mi cuenta. ¿Puede alguien por qué ayudarme a entender?
Escriba el siguiente código en interpreator:
(car ''abracadabra)
Y se imprime 'cita'. ¿Por qué?
Solución
Como dijo gimpf, 'abracadabra = (citar abracadabra). Puede verificar esto escribiendo "abracadabra en el REPL, que se imprimirá (citar abracadabra).
Otros consejos
Porque '' abracadabra es realmente (cita (cita abracadabra)). En Esquema, la regla es: evaluar todas las partes de la expresión-s, y aplicar la primera parte al resto de las partes.
" coche " y " cita " Son simbolos en la parte de abajo. #car y #quote son las funciones a las que hacen referencia.
Si tomas
(car (quote (quote abracadabra)))
y evalúa las partes, obtienes
(#car (quote abracadabra))
Luego, aplique la primera parte (la función de automóvil) a la segunda parte (una lista de dos símbolos).
quote
Y obtienes solo el símbolo " cita " ;.
Solo recuerda, para averiguar qué sucede en el Esquema, evalúa las partes y aplica las primeras al resto. Si evalúas una cita, obtienes las cosas dentro. La única parte confusa es que algunas primitivas (números y cadenas) se evalúan a sí mismas.