You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Racket跨文件模块单元测试问题:无法识别模块内标识符

解决Racket模块函数未绑定的问题

你的问题出在avl_tree.rkt的模块写法错误:你用(module avl_tree racket ...)把代码包裹成了文件内部的子模块,而非将整个文件作为独立模块。此时provide仅导出子模块内的函数,但测试文件require的是文件顶层环境,并未导入子模块内容,因此找不到is_tree?。

正确的模块写法

修改avl_tree.rkt,去掉外层的(module ...)包裹,直接用#lang racket作为文件开头:

#lang racket
(provide all-defined-out)

(define (is_tree? tree)
  ; 这里写你的实现逻辑
  #t) ; 示例返回值,替换成实际代码

; 其他函数定义...

测试文件无需修改

你的avl_tree_testing.rkt写法没问题,修改完模块文件后,直接运行测试文件就能正常调用is_tree?:

#lang racket
(require rackunit)
(require "avl_tree.rkt")

(is_tree? '(5 (1 null null) (9 (6 null null) (10 null null))))

(可选)如果非要用内部子模块

若你坚持要在文件里用子模块写法,测试文件需要明确导入子模块:

#lang racket
(require rackunit)
(require (submod "avl_tree.rkt" avl_tree)) ; 导入子模块

(is_tree? '(5 (1 null null) (9 (6 null null) (10 null null))))

但这种写法没必要,独立模块文件推荐用第一种方式。

内容的提问来源于stack exchange,提问作者Spartacuz9er9er

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:42:36