rendered paste body(define (eval xval code)
(cond
[(number? code) code]
[(symbol? code) xval]
[(cons? code)
(cond
[(symbol=? (first code) '+) (+ (eval xval (second code)) (eval xval (third code)))]
[(symbol=? (first code) '-) (- (eval xval (second code)) (eval xval (third code)))]
[(symbol=? (first code) '*) (* (eval xval (second code)) (eval xval (third code)))]
[(symbol=? (first code) '/) (/ (eval xval (second code)) (eval xval (third code)))]
)
]
[else "Idiot programmer passed illegal code: must be number, symbol, or list."]
)
)
; evaluating a number (x ignored)
(eval 1 5) ; => 5
; evaluating x
(eval 1 'x) ; => 1
; evaluating a list
(eval 1 '(+ x 5)) ; => 6
(eval 1 '(- x 1)) ; => 0
; evaluating nested lists
(eval 1 '(/ (+ x 3) 2)) ; => 2
; evaluating complete nonsense
(eval 0 #\a) ; => insulting error message