我开始使用DrRacket来完成SICP的工作。我安装了sicp包,并在单元测试文件的顶部声明了#lang sicp,然后声明了(require rackunit "xxx.scm"),但是我得到了一个未绑定标识符错误。是否有一个错误,或它不可能使用rackunit与sicp软件包这样?
发布于 2020-09-12 02:17:30
您需要使用#%require。
#%require实际上是最低级的球拍类型,它与require略有不同。
#lang sicp
(#%require rackunit "xxx.scm")要测试的文件将成为一个模块,通过提供要公开的标识符,您可以从其他代码中使用该文件:
(#%provide procedure-name)您也可以只需要几个所需的表单。例如:error和time来自racket/base
(#%require (only racket/base error time))找出它们在哪里的一个提示是在DrRacket中搜索在线手册或帮助> the文档。例如:这里有一个搜索error的例子,在这里你有很多选择,但是球拍前缀是你要寻找的。
注意:并不是所有的表格都是跨语言兼容的。例如:R5RS具有与#lang racket不同的对实现
https://stackoverflow.com/questions/63855756
复制相似问题