30 votes

Dr Racket problèmes avec SICP

Je travaille via SICP. Actuellement, dans le premier chapitre, j'ai des problèmes pour que Racket me permette de redéfinir les "primitives". Par exemple, j'avais l'impression que je devrais être capable de faire arbitrairement "(définir + 5)" et ce serait bien ou redéfinir la procédure sqrt. Au lieu de cela, j'obtiens ceci: "define-values: impossible de changer la variable constante: +" J'ai le langage actuellement défini sur R5RS, qui, selon moi, prendrait soin des problèmes de compatibilité avec SICP.

35voto

Eli Barzilay Points 21403

Même si cela est possible, des redéfinitions ne sont pas quelque chose que vous devriez faire sans vraiment comprendre comment le système va réagir à cela. Par exemple, si vous redéfinissez +, sera tout autre code de pause? La réponse dans la Raquette de l'affaire est "non", mais c'est parce que vous n'avez pas vraiment à redéfinir +: au lieu de cela, vous définissez un nouveau +, dont seulement votre code peut utiliser.

Comme pour le choix de la langue -- Raquettes de R5RS mode est très stricte, et ce n'est pas quelque chose que vous ne voulez généralement à utiliser. Pour un beaucoup plus SICP respectueux de l'environnement, voir Neil Van Dyke SICP page d'assistance qui vous fournira une langue faite spécialement pour le livre. (Autant que je me souvienne, il a même le langage graphique que les livres s'affiche.)

20voto

orange80 Points 5822

J'ai couru dans des problèmes d'essayer de travailler à travers le RSA exemple ici (partie de la SICP trucs):
http://mitpress.mit.edu/sicp/psets/ps3/readme.html

Pour obtenir ce travail que j'avais à faire ceci:

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

#lang planet neil/sicp

et puis en appuyant sur "Exécuter"

2) Profiter de DrRacket très convivial, automatique de télécharger et d'installer la Planète Neil module en allant prendre un café ;-)

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

4) les Rouvrir, et choisir SICP Planète 1.15 Choisir Une liste de Langues.
(Je ne pourrais pas obtenir de l'ajout de la déclaration en haut à travailler pour moi, hormis le fait que pour effectuer le téléchargement initial.)

Bonne chance!

11voto

Josh Infiesto Points 1921

Dans le panneau de langue, vous devez désactiver "interdire la redéfinition des liaisons initiales". Cela résout le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X