Si por "Esquema estándar (en el IDE de la raqueta)," quiere decir el lenguaje de la raqueta, es decir, lo que se obtiene cuando se anteponga a código con #lang racket,
luego la parte superior cuatro diferencias a tener en cuenta son:
- un sistema de módulo diferente
- un sistema macro diferente (dependiendo de la edad de su código es)
- contra-células inmutables (a menos que se importan los mutables)
- no pasaría de un solo brazo de la raqueta (utilizar
when
)
Para transferir el código de Guile a Racket, averigüe qué archivos están "en la parte inferior" de sus dependencias, es decir, busque los archivos que no dependen de otros archivos. Abra dicho archivo en Raqueta, agregue la línea #lang racket en la parte superior e intente ejecutarlo.
Lo más probable es que encuentre algunos errores de "identificador sin consolidar". Si tiene suerte, la función está presente en Racket, pero no está incluida en el lenguaje "racket". Busque el nombre en la documentación de Racket, y si lo encuentra, use (requiera ...) para importar el nombre en su programa.
A continuación, ejecute el programa de nuevo para encontrar el siguiente error.
Algunas funciones tienen nombres diferentes en Guile y Racket, así que busque el nombre en la documentación Guile y vea qué hace. A continuación, abra la documentación Racket sobre el mismo tema y vea cómo se llama en Racket.
En algunos casos, es posible que tenga que realizar cambios mayores. Si no puede encontrar alguna funcionalidad en la documentación de Racket, intente preguntar en la lista de correo. Podría ser que simplemente tiene un nombre diferente, o que alguien lo implementó y lo puso en PLaneT (por lo tanto, no aparecerá en la documentación hasta que haya instalado el paquete).
Ejemplo de importación de srfi/1 en el lenguaje R5RS.
#lang r5rs
(#%require srfi/1)
(xcons 1 2)
Diferencias de código R4RS con el Esquema moderna?
Una cosa a tener en cuenta es que en R4RS la lista vacía '() contada como falsa, no se interpreta como verdadera.
Ver esta cuestión para más cosas a tener en cuenta:
Running SICP Pattern Matching Rule Based Substitution Code
Véase también esta lista de cambios de la norma R5RS: List of changes from R4RS to R5RS
Si ha atascado en estrecha colaboración con el R5RS y Estándares R6RS, entonces los lenguajes de compatibilidad que están incorporados en Racket pueden ayudar. Consulte: http://docs.racket-lang.org/guide/standards.html – dyoo
¿Podría especificar qué idioma declara en DrRacket (R5RS/racket/etc)? ¿Podría dar ejemplos de dónde se está rompiendo el código? – oobivat
@oobivat He barrido deliberadamente la red: la pregunta detrás de mi pregunta es "¿cuál es el material no estándar en el esquema de engaño"? Si hace que la pregunta sea más fácil de responder, entonces lo expresaría como "¿Qué es lo que probablemente romperá con mi código de esquema de engaño de 1994 cuando se ejecuta en Raqueta configurada en R5RS, y cómo lo soluciono?" – hawkeye