我的一门课程是在 SICP 的某些部分使用 DrRacket。我们正在研究元循环评估器,我有一个 R5RS 代码文件 (set-car!
和set-cdr!
),我需要在我的工作中使用它。因为 R5RS 文件大约有 500 行,所以我更愿意将它保存在单独的缓冲区中。如何将它包含在我的答案缓冲区的定义中?它似乎racket/include
需要,#lang racket
但不是那种语言。set-car!
set-cdr!
问问题
1730 次
1 回答
10
您可以执行以下操作:
在#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 时执行适当的操作,并且它的交互缓冲区将知道f1.ss中写入的所有定义。
这使用文档中提到的 Racket-specfic 低级模块导入内容。祝你好运!
于 2011-11-28T04:07:21.670 回答