Question
Ce qui suit est un exercice du SICP. Je ne pouvais pas le comprendre moi-même. Certains peuvent-ils m'aider à comprendre?
Tapez le code suivant dans l'interpréteur:
(car ''abracadabra)
Et il affiche la citation. Pourquoi?
La solution
Comme le disait gimpf, 'abracadabra = (citation abracadabra). Vous pouvez le vérifier en tapant "abracadabra" dans le REPL, qui imprimera (quote abracadabra).
Autres conseils
Parce que '' abracadabra est vraiment (citation (citation abracadabra)). Dans Scheme, la règle est la suivante: évaluez toutes les parties de l'expression s et appliquez la première partie au reste des parties.
" voiture " et " devis " sont des symboles ci-dessous. #car et #quote sont les fonctions auxquelles ils font référence.
Si vous prenez
(car (quote (quote abracadabra)))
et évaluer les pièces, vous obtenez
(#car (quote abracadabra))
Appliquez ensuite la première partie (la fonction voiture) à la seconde partie (une liste de deux symboles).
quote
Et vous obtenez uniquement le symbole "citation".
N'oubliez pas, pour comprendre ce qui se passe dans Scheme, évaluez les parties et appliquez les premières aux autres. Si vous évaluez les devis, vous obtenez le contenu à l'intérieur. Le seul inconvénient est que certaines primitives (nombre et chaînes) s’évaluent elles-mêmes.