我的一门课程是将DrRacket用于SICP的某些部分。我们正在研究metacircular评估员,我有一个R5RS代码文件(set-car!
和set-cdr!
),我需要将其与我的工作一起使用。因为R5RS文件大约是500行,所以我更喜欢将它保存在单独的缓冲区中。如何将其包含在我的答案缓冲区的定义中?看来racket/include
需要#lang racket
,但set-car!
和set-cdr!
不在该语言中。
答案 0 :(得分:9)
您可以执行以下操作:
在 #lang r5rs 中编写模块,并在lang行后添加以下内容:
(#%provide (all-defined))
在 #lang r5rs 中也有你的答案缓冲区,并使用#%require 来提取其定义:
(#%require "some-module.ss")
例如,如果我的 f1.ss 包含以下内容:
#lang r5rs
(#%provide (all-defined))
(define (f x)
(* x x))
和 f2.ss ,内容如下:
#lang r5rs
(#%require "f1.ss")
(display (f 3))
(display (f 4))
然后如果我运行 f2.ss ,它会在显示916时执行相应的操作,并且其Interactions缓冲区将了解用 f1.ss 编写的所有定义。
这使用Racket-specfic低级模块导入documentation中提到的内容。祝你好运!