是否可以在 DrRacket 中使用 rackunit 并将语言设置为 sicp,如果可以,如何使用?
Is it possible to use rackunit in DrRacket with language set to sicp, and if so, how?
我开始使用 DrRacket 通过 SICP 工作。我安装了 sicp 包,并在单元测试文件的顶部声明了 #lang sicp
,然后是 (require rackunit "xxx.scm")
,但是我得到了一个 未绑定标识符 错误。是不是出错了,还是不能这样用sicp包的rackunit?
您需要使用#%require
。
#%require
is actually a primitive type in the lowest level of racket and it is slightly different than require
:
#lang sicp
(#%require rackunit "xxx.scm")
您要测试的文件成为一个模块,因此您可以通过提供您想要公开的标识符从其他代码中使用它:
(#%provide procedure-name)
您也可以只需要一些必要的表格。例如。 error
和 time
来自 racket/base
:
(#%require (only racket/base error time))
找到它们所在位置的提示是搜索在线手册或从 DrRacket 中的帮助 > Racket 文档。例如。这是一个搜索 error
的例子,你有很多选择,但球拍前缀的是你要找的。
注意:并非所有形式都跨语言兼容。例如。 R5RS 具有与 #lang racket
不同的对实现
我开始使用 DrRacket 通过 SICP 工作。我安装了 sicp 包,并在单元测试文件的顶部声明了 #lang sicp
,然后是 (require rackunit "xxx.scm")
,但是我得到了一个 未绑定标识符 错误。是不是出错了,还是不能这样用sicp包的rackunit?
您需要使用#%require
。
#%require
is actually a primitive type in the lowest level of racket and it is slightly different than require
:
#lang sicp
(#%require rackunit "xxx.scm")
您要测试的文件成为一个模块,因此您可以通过提供您想要公开的标识符从其他代码中使用它:
(#%provide procedure-name)
您也可以只需要一些必要的表格。例如。 error
和 time
来自 racket/base
:
(#%require (only racket/base error time))
找到它们所在位置的提示是搜索在线手册或从 DrRacket 中的帮助 > Racket 文档。例如。这是一个搜索 error
的例子,你有很多选择,但球拍前缀的是你要找的。
注意:并非所有形式都跨语言兼容。例如。 R5RS 具有与 #lang racket