racket - 是否可以在语言设置为 sicp 的 DrRacket 中使用 rackunit,如果可以,如何使用?
问题描述
我开始使用 DrRacket 通过 SICP 工作。我安装了 sicp 包,然后#lang sicp
在单元测试文件的顶部声明了(require rackunit "xxx.scm")
,但是我得到了一个未绑定的标识符错误。有没有错误,或者不能以这种方式将rackunit与sicp包一起使用?
解决方案
你需要使用#%require
.
#%require
实际上是最低级别的球拍中的原始类型,它与以下略有不同require
:
#lang sicp
(#%require rackunit "xxx.scm")
您要测试的文件成为一个模块,因此您可以通过提供要公开的标识符从其他代码中使用它:
(#%provide procedure-name)
您也可以只需要一些需要的表格。例如。error
并time
从racket/base
:
(#%require (only racket/base error time))
找出它们在哪里的提示是搜索在线手册或从 DrRacket 中的帮助 > 球拍文档。例如。这是一个搜索示例error
,您有很多选择,但以球拍为前缀的是您正在寻找的选择。
注意:并非所有形式都跨语言兼容。例如。R5RS 有不同的配对实现#lang racket
推荐阅读
- ruby - `gem install` 忽略了 $GEM_HOME
- python-3.x - python中的舍入函数
- radio - USSD 通信的无线电资源使用情况
- python - 需要从不同的列表中挑选单个元素并将它们存储在字典中
- node.js - 如何使用 Jsonwebtoken NPM 包验证 Azure AD 颁发的 JWT 令牌?
- sql - SQL:使用前一行的值填充当前行
- mysql - 是否可以在时间戳上对 Mysql 表进行索引
- python - 输入两个单独的列表并输出一个字典列表
- android - 如何从可移动 sd 卡路径中获取所有文件路径和名称?
- c++ - 如何检查用户输入是否超过一个字母并在 C++ 中正确显示