Pregunta

Estoy trabajando a través SICP. Actualmente, en el primer capítulo, estoy teniendo problemas para conseguir la raqueta que me deje redefino "primitivos". Por ejemplo, yo tenía la impresión de que yo debería ser capaz de hacer arbitrariamente (define + 5) y que estaría bien, o redefinir el procedimiento sqrt. En su lugar, me sale esto:

define-values: cannot change constant variable: +

Tengo el idioma configurado para R5RS, que estaba bajo la impresión se haría cargo de los problemas de compatibilidad con SICP.

¿Fue útil?

Solución

Incluso si es posible, tales redefiniciones no son algo que se debe hacer sin entender realmente cómo el sistema va a reaccionar a esto. Por ejemplo, si se redefine +, hará cualquier otra ruptura código? La respuesta a eso en el caso de la raqueta es "no" - pero esto se debe a que en realidad no llega a redefinir +: en cambio, se define un nueva +, que sólo puede utilizar el código <. / p>

En cuanto a la elección de la lengua - el modo de raquetas R5RS es muy estricta, y no es algo que te gustaría por lo general desea utilizar. Para una página más más SICP-favorable al medio ambiente, ver de Neil Van Dyke SICP Soporte , que le proporcionará una lengua hecha específicamente para el libro. (IIRC, que incluso tiene el lenguaje gráfico que muestra los libros fuera.)

Otros consejos

Me encontré con problemas al tratar de trabajo a través del ejemplo RSA aquí (parte de la materia SICP):
http://mitpress.mit.edu/sicp/psets/ps3/readme.html

Para obtener este trabajo que tenía que hacer esto:

1) Ejecutar a través de la descarga inicial añadiendo esto a la parte superior de un archivo en blanco:

#lang planet neil/sicp

y luego pulsar "Ejecutar"

2) Disfrute muy fácil de usar DrRacket, descarga automática e instalar el módulo planeta Neil por ir a tomar un café; -)

3) Y a continuación, una vez instalado, cerca DrRacket.

4) Volver a abrir, y elija SICP planeta 1.15 de la lista elegir un idioma.
(No pude conseguir la adición de la declaración en la parte superior de trabajo para mí, aparte de hacer eso para llevar a cabo la descarga inicial.)

Buena suerte!

En el panel de la lengua, es necesario desactivar "redefinición disallow de fijaciones iniciales." Esto soluciona el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top