将r5rs文件包含在球拍中的另一个文件中

Kiz*_*aru 5 scheme sicp racket

我的一门课程是将DrRacket用于SICP的某些部分.我们正在研究metacircular评估员,我有一个R5RS代码文件(set-car!set-cdr!),我需要与我的工作一起使用.因为R5RS文件大约是500行,所以我更喜欢将它保存在单独的缓冲区中.如何将其包含在我的答案缓冲区的定义中?这似乎racket/include需要#lang racket,但set-car!set-cdr!没有在该语言.

dyo*_*yoo 9

您可以执行以下操作:

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

    (#%provide (all-defined))
    
    Run Code Online (Sandbox Code Playgroud)
  2. #lang r5rs中也有你的答案缓冲区,并使用#%require来引入它的定义:

    (#%require "some-module.ss")
    
    Run Code Online (Sandbox Code Playgroud)

例如,如果我有一个包含以下内容的f1.ss:

#lang r5rs
(#%provide (all-defined))
(define (f x)
  (* x x))
Run Code Online (Sandbox Code Playgroud)

以及具有以下内容的f2.ss:

#lang r5rs
(#%require "f1.ss")
(display (f 3))
(display (f 4))
Run Code Online (Sandbox Code Playgroud)

然后,如果我运行f2.ss,它在显示916时做了相应的事情,它的Interactions缓冲区将知道f1.ss中写的所有定义.

这使用Racket-specfic低级模块导入文档中提到的内容.祝好运!