2011-11-28 12 views
5

Uno dei miei corsi sta usando DrRacket per alcune sezioni del SICP. Stiamo lavorando per il valutatore metacircular e ho un file di codice R5RS (set-car! e set-cdr!), che ho bisogno di usare con il mio lavoro. Poiché il file R5RS è di circa 500 righe, preferirei tenerlo in un buffer separato. Come posso includerlo nelle definizioni del buffer delle risposte? Sembra racket/include richiede #lang racket, ma set-car! e set-cdr! non sono in quella lingua.Tra cui un file R5RS in un altro file nella racchetta

risposta

9

È possibile effettuare le seguenti operazioni:

  1. Scrivi il modulo in R5RS #lang, e aggiungere il seguente dopo la riga lang:

    (#%provide (all-defined)) 
    
  2. avere il vostro buffer di risposta anche in #lang r5rs e utilizzare #% richiede per inserire le sue definizioni:

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

Ad esempio, se ho un f1.ss con il seguente contenuto:

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

e un f2.ss con il seguente contenuto:

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

poi se corro f2.ss, fa la cosa giusta nel DIS giocare 916, e il suo buffer interazioni saprà di tutte le definizioni scritte in f1.ss.

Questo utilizza il modulo di basso livello specifico per Racket che importa le voci menzionate nello documentation. In bocca al lupo!

Problemi correlati