如何让Racket支持define-type?新手遇语法启用报错求助
在Racket中使用
define-type的正确方式 问题说明
你在Windows 10系统的Racket命令行里运行《Programming Languages Application and Interpretation》中的代码时,碰到两个问题:
- 直接输入
define-type相关代码,收到错误:define-type: undefined;
cannot reference an identifier before its definition
in module: top-level
[,bt for context] - 尝试输入
#lang plai-typed,又出现错误:string:1:0: read-syntax:
#langnot enabled
possible reason: not allowed again inside a module that already starts#lang, or not enabled for interactive evaluation
解决办法
办法1:在交互式命令行中导入库
Racket默认的顶层环境没加载plai-typed库,所以先执行这条命令导入:
(require plai-typed)
导入成功后,再输入你的define-type代码就能正常运行了。
办法2:创建Racket源文件(推荐)
如果要写完整程序,建议新建一个后缀为.rkt的文件,在文件第一行写上:
#lang plai-typed
接着把你的define-type代码放在下面,保存后用Racket打开该文件,或者在命令行执行racket 你的文件名.rkt即可正常运行。
错误原因
- 第一个错误:
define-type是plai-typed库专属的语法,默认环境没加载这个库,自然识别不了。 - 第二个错误:
#lang只能作为Racket源文件的第一行来指定语言,在交互式命令行里不能直接用,必须用require导入对应库。
内容的提问来源于stack exchange,提问作者Roger Costello
相关产品推荐
相关产品推荐

