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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top