3

从“编程语言:应用程序和解释”一书第 6 页,我尝试编写 DrRacket 中的第一个示例

#lang typed/racket

(define-type AE
 [num (n number?)]
 [add (lhs AE?) (rhs AE?)]
 [sub (lhs AE?) (rhs AE?)])

但我得到了错误

aeinterpretter.rkt:5:2: define-type: unexpected term in: (add (lhs AE?) (rhs AE?))

我在这里做错了什么?

4

1 回答 1

7

您应该使用PLAI语言运行此示例:

#lang plai

(define-type AE
 [num (n number?)]
 [add (lhs AE?) (rhs AE?)]
 [sub (lhs AE?) (rhs AE?)])

Typed Racket语言是一种完全不同的语言,它为您提供了基本 Racket 语言的大部分功能,但具有静态类型系统。define-typePLAI 中的形式是“类型”的不同概念。

于 2012-08-25T18:46:21.787 回答