首页 > 解决方案 > 是否可以在语言设置为 sicp 的 DrRacket 中使用 rackunit,如果可以,如何使用?

问题描述

我开始使用 DrRacket 通过 SICP 工作。我安装了 sicp 包,然后#lang sicp在单元测试文件的顶部声明了(require rackunit "xxx.scm"),但是我得到了一个未绑定的标识符错误。有没有错误,或者不能以这种方式将rackunit与sicp包一起使用?

标签: racketsicprackunit

解决方案


你需要使用#%require.

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

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

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

(#%provide procedure-name)

您也可以只需要一些需要的表格。例如。errortimeracket/base

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

找出它们在哪里的提示是搜索在线手册或从 DrRacket 中的帮助 > 球拍文档。例如。这是一个搜索示例error,您有很多选择,但以球拍为前缀的是您正在寻找的选择。

注意:并非所有形式都跨语言兼容。例如。R5RS 有不同的配对实现#lang racket


推荐阅读