Question

Je travaille par SICP. À l'heure actuelle, dans le premier chapitre, je vais avoir des problèmes pour faire Racket de me laisser redéfinir le terme « primitives ». Par exemple, j'avais l'impression que je serais capable de le faire de manière arbitraire (define + 5) et ce serait très bien, ou redéfinir la procédure de sqrt. Au lieu de cela, je reçois ceci:

define-values: cannot change constant variable: +

J'ai la langue actuellement mis à r5rs, que j'avais l'impression prendrait soin des problèmes de compatibilité avec SICP.

Était-ce utile?

La solution

Même si possible, ces redéfinitions ne sont pas quelque chose que vous devriez faire sans vraiment comprendre comment va réagir le système à ce sujet. Par exemple, si vous redéfinissez +, sera tout autre pause de code? La réponse à cette question dans le cas de Racket est « non » - mais cela est parce que vous ne recevez pas vraiment Redéfinir +: à la place, vous définissez un nouveau +, qui seul votre code peut utiliser <. / p>

En ce qui concerne le choix de la langue - le mode Rackets r5rs est très stricte, et ce n'est pas quelque chose que vous voudriez habituellement utiliser. Pour une beaucoup environnement plus convivial SICP, voir Neil Van Dyke SICP soutien page qui vous fournira une langue spécifiquement fait pour le livre. (IIRC, il a même le langage graphique que les livres montre au loin).

Autres conseils

Je suis tombé sur des problèmes en essayant de travailler à travers l'exemple de RSA ici (partie de la substance de SICP):
http://mitpress.mit.edu/sicp/psets/ps3/readme.html

Pour ce travail, je devais faire ceci:

1) Exécuter à travers le téléchargement initial en ajoutant ceci au-dessus d'un fichier vide:

#lang planet neil/sicp

puis frapper "Exécuter"

2) Profitez de très facile à utiliser DrRacket convivial, le téléchargement automatique et installer le module PlaNet Neil en allant prendre un café; -)

3) Et puis une fois qu'il est installé, DrRacket proche.

4) Rouvrir, et choisissez SICP PlaNet 1,15 dans la liste Choisissez une liste de langue.
(Je ne pouvais pas ajouter la déclaration au sommet de travailler pour moi à part de le faire pour effectuer le téléchargement initial.)

Bonne chance!

Dans le panneau de langue, vous devez désactiver « redéfinition disallow des liaisons initiales. » Cette version corrige le problème.

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