Reputation: 31
So im defining this 'language' ValueC in DrRacket, my parser works but I get errors with the interpreter. I defined my expression types as follows :
(define-type ValueC
[numC (n : number)]
[boolC (b : boolean)]
[eqC (l : ValueC) (r : ValueC)]
[greaterC (l : ValueC) (r : ValueC)]
...
[unlessC (l : ValueC) (r : ValueC)])
I also did define-type for outputs of my interpreter:
(define-type Value
[numV (n : number)]
[boolV (b : boolean)])
And my interpreter itself looks like this:
(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))]))
But I get an error message saying:
'typecheck failure: number vs Value sources'
Any idea how I can change the 'define-type' for value to get rid of this?
Upvotes: 0
Views: 535
Reputation: 17203
I'm willing to bet that one or more expressions in your code are highlighted. Take a look at them!
Upvotes: 0