最近我正在学习Racket,在理解"定义类型"语法方面遇到了一些困难。我尝试了以下代码:
#lang racket
(define-type Num Number)
但它输出以下错误消息:
define-type: unbound identifier in module in: define-type
有人可以帮助我处理此错误吗?我已经阅读了所有可能的文档,似乎它应该可以工作。
程序都以 #lang
开头的行开头是有原因的: Racket 不仅仅是一种编程语言,而是一个编程语言的生态系统。每个文件(更具体地说,每个模块)都可以使用自己的编程语言,并且它们都可以轻松地相互通信。
默认情况下,Dr. Racket 会创建顶部带有#lang racket
行的新文件。这就是"球拍语言",但它并不是"球拍系统"提供的唯一语言,它实际上包括数十种语言,有些与#lang racket
没有太大区别,有些几乎完全无关。
当您想使用Typed Racket时,您需要选择使用该语言而不是动态类型的普通#lang racket
。您可以通过在程序顶部编写#lang typed/racket
来执行此操作。
#lang typed/racket
(define-type Num Number)
现在,Typed Racket的所有功能都将在该模块中可供您使用。