#lang racket (require "test-util.rkt") (require "rvar.rkt") (define (interp-exp env e) ((send (new interp-RVar-class) interp-exp env) e)) (test-eq (let ([env `((a . 1) (b . 2))]) (interp-exp env (Var 'a))) 1) (test-eq (let ([env `((a . 1) (b . 2))]) (interp-exp env (Prim '+ (list (Var 'a) (Int 3))))) 4) (test-eq (let ([env `((a . 1) (b . 2))]) (interp-exp env (Prim '- `(,(Int 3))))) -3) (test-eq (let ([env `((a . 1) (b . 2))]) (interp-exp env (Prim '+ (list (Var 'a) (Prim `- (list (Var 'b))))))) -1) (test-eq (interp-exp `() (Let 'a (Prim '+ (list (Int 1) (Int 2))) (Prim '+ (list (Var 'a) (Int 3))))) 6) (test-eq (interp-RVar (Program `() (Let 'a (Prim '+ (list (Int 1) (Int 2))) (Prim '+ (list (Var 'a) (Int 3)))))) 6)