Kiz*_*aru 5 scheme sicp racket
我的一门课程是将DrRacket用于SICP的某些部分.我们正在研究metacircular评估员,我有一个R5RS代码文件(set-car!
和set-cdr!
),我需要与我的工作一起使用.因为R5RS文件大约是500行,所以我更喜欢将它保存在单独的缓冲区中.如何将其包含在我的答案缓冲区的定义中?这似乎racket/include
需要#lang racket
,但set-car!
并set-cdr!
没有在该语言.
您可以执行以下操作:
在#lang r5rs中写入模块,并在lang行之后添加以下内容:
(#%provide (all-defined))
Run Code Online (Sandbox Code Playgroud)在#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低级模块导入文档中提到的内容.祝好运!