lisp scheme racket sicp

lisp - Dr Racket problemas con SICP



scheme (3)

En el panel de idiomas, debe desactivar "no permitir la redefinición de los enlaces iniciales". Esto soluciona el problema.

Estoy trabajando con SICP. Actualmente, en el primer capítulo, tengo problemas para conseguir que Racket me permita redefinir "primitivos". Por ejemplo, tenía la impresión de que debería poder hacer arbitrariamente (define + 5) y eso estaría bien, o redefinir el procedimiento sqrt . En cambio, entiendo esto:

define-values: cannot change constant variable: +

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


Incluso si es posible, tales redefiniciones no son algo que deba hacer sin entender realmente cómo reaccionará el sistema ante esto. Por ejemplo, si redefine + , ¿se romperá cualquier otro código? La respuesta a eso en el caso de Racket es "no", pero esto se debe a que realmente no puede redefinir + : en su lugar, define un nuevo + , que solo su código puede usar.

En cuanto a la elección de idioma, el modo Rackets R5RS es muy estricto, y no es algo que normalmente querría usar. Para un entorno mucho más amigable para SICP, vea la página de Soporte de SICP de Neil Van Dyke que le proporcionará un lenguaje específicamente creado para el libro. (IIRC, incluso tiene el lenguaje gráfico que muestran los libros).


Me encontré con problemas tratando de trabajar a través del ejemplo de RSA aquí (parte de las cosas del SICP):
http://mitpress.mit.edu/sicp/psets/ps3/readme.html

Para que esto funcione tuve que hacer esto:

1) Ejecute la descarga inicial agregando esto a la parte superior de un archivo en blanco:

#lang planet neil/sicp

y luego presionando "Ejecutar"

2) Disfrute de la descarga automática e intuitiva de DrRacket e instale el módulo PLaneT Neil yendo a tomar un café ;-)

3) Y luego, una vez que esté instalado, cierre DrRacket.

4) Vuelva a abrir y elija SICP PLaneT 1.15 en la lista Elija un idioma.
(No pude agregar la declaración en la parte superior para que trabaje para mí aparte de hacer eso para realizar la descarga inicial.)

¡Buena suerte!