Racket 带布尔表达式的plai型内拍
所以我在DrRacket中定义了这个“语言”值,我的解析器可以工作,但我在解释器中遇到了错误。 我将表达式类型定义如下:Racket 带布尔表达式的plai型内拍,racket,Racket,所以我在DrRacket中定义了这个“语言”值,我的解析器可以工作,但我在解释器中遇到了错误。 我将表达式类型定义如下: (define-type ValueC [numC (n : number)] [boolC (b : boolean)] [eqC (l : ValueC) (r : ValueC)] [greaterC (l : ValueC) (r : ValueC)] ... [unlessC (l : ValueC) (r : ValueC)])
(define-type ValueC
[numC (n : number)]
[boolC (b : boolean)]
[eqC (l : ValueC) (r : ValueC)]
[greaterC (l : ValueC) (r : ValueC)]
...
[unlessC (l : ValueC) (r : ValueC)])
我还为我的解释器的输出定义了类型:
(define-type Value
[numV (n : number)]
[boolV (b : boolean)])
我的解释器本身是这样的:
(define (interp [a : ValueC]) : Value
(type-case ValueC a
[numC (n) (numV n)]
[boolC (b) (boolV b)]
[plusC (l r) (+ (interp r) (interp l))]
[multC (l r) (numV (* (interp l) (interp r)))]
[eqC (l r) (boolV (= (interp l) (interp r)))]
[greaterC (l r) (boolV (> (interp l) (interp r)))]
...
[unlessC (l r) (unless (interp r) (interp l))]))
但我收到一条错误消息,上面说:
'typecheck failure: number vs Value sources'
您知道如何更改value的“define type”以消除此问题吗?我敢打赌代码中的一个或多个表达式会高亮显示。看看他们