从第6页的"编程语言:应用程序和解释"一书中,我尝试编写DrRacket中的第一个示例
#lang typed/racket
(define-type AE
[num (n number?)]
[add (lhs AE?) (rhs AE?)]
[sub (lhs AE?) (rhs AE?)])
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
aeinterpretter.rkt:5:2: define-type: unexpected term in: (add (lhs AE?) (rhs AE?))
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
您应该使用PLAI语言运行此示例:
#lang plai
(define-type AE
[num (n number?)]
[add (lhs AE?) (rhs AE?)]
[sub (lhs AE?) (rhs AE?)])
Run Code Online (Sandbox Code Playgroud)
该类型化的球拍语言是一种完全不同的语言,为您提供最基础球拍语言的力量,但有一个静态类型系统.define-typePLAI中的形式是"类型"的不同概念.