2011-11-28 22 views
5

Una de mis cursos está utilizando DrRacket para algunas secciones de SICP. Estamos trabajando en el evaluador metacircular y tengo un archivo de código R5RS (set-car! y set-cdr!) que necesito usar con mi trabajo. Debido a que el archivo R5RS tiene aproximadamente 500 líneas, preferiría mantenerlo en un buffer separado. ¿Cómo puedo incluirlo en las definiciones de mi buffer de respuesta? Parece que racket/include requiere #lang racket, pero set-car! y set-cdr! no están en ese idioma.Incluyendo un archivo R5RS en otro archivo en la raqueta

Respuesta

9

Usted puede hacer lo siguiente:

  1. Escribir el módulo en R5RS #lang, y añadir lo siguiente después de la línea lang:

    (#%provide (all-defined)) 
    
  2. Haga que su búfer de respuesta también en #lang r5rs, y use #% requieren para obtener sus definiciones:

    (#%require "some-module.ss") 
    

Por ejemplo, si tengo una f1.ss con el siguiente contenido:

#lang r5rs 
(#%provide (all-defined)) 
(define (f x) 
    (* x x)) 

y un f2.ss con el siguiente contenido:

#lang r5rs 
(#%require "f1.ss") 
(display (f 3)) 
(display (f 4)) 

luego si ejecuto f2.ss, hace lo correcto en dis jugando 916, y su buffer de Interacciones sabrá sobre todas las definiciones escritas en f1.ss.

Este utiliza el módulo de importación de bajo nivel material de la Raqueta-specfic mencionado en el documentation. ¡Buena suerte!

Cuestiones relacionadas