5

我的一门课程是在 SICP 的某些部分使用 DrRacket。我们正在研究元循环评估器,我有一个 R5RS 代码文件 (set-car!set-cdr!),我需要在我的工作中使用它。因为 R5RS 文件大约有 500 行,所以我更愿意将它保存在单独的缓冲区中。如何将它包含在我的答案缓冲区的定义中?它似乎racket/include需要,#lang racket但不是那种语言。set-car!set-cdr!

4

1 回答 1

10

您可以执行以下操作:

  1. 在#lang r5rs中编写模块,并在 lang 行之后添加以下内容:

    (#%provide (all-defined))
    
  2. 将您的答案缓冲区也放在#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 回答