可以在DrRacket中将语言单元设置为sicp来使用rackunit,如果可以,如何使用?

问题描述

我开始使用DrRacket通过SICP进行工作。我安装了sicp软件包,并在单元测试文件的顶部声明了#lang sicp,然后声明了(require rackunit "xxx.scm"),但是出现了 unbound identifier 错误。是否有错误,或者不能以这种方式在sicp软件包中使用rackunit?

解决方法

您需要使用#%require

#%require实际上是球拍最低级别的原始类型,它与require略有不同:

#lang sicp
(#%require rackunit "xxx.scm")

您要测试的文件成为一个模块,因此您可以通过提供要公开的标识符从其他代码中使用它:

(#%provide procedure-name)

您也可以只需要一些所需的表格。例如。 error中的timeracket/base

(#%require (only racket/base error time))

有关查找其位置的提示是搜索在线手册,或从DrRacket中的“帮助”>“ Racket”文档中查找。例如。这是一个搜索error的示例,您可以在其中进行多种选择,但以球拍开头的选项是您要寻找的选项。

NB:并非所有表格都跨语言兼容。例如。 R5RS与#lang racket

具有不同的配对实现

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...