;; Question 1 (= (eval '(+ 2 (pow x 2)) 2) 6) (= (eval '(/ x 2) 4) 2) (= (eval '(* 3 (+ x 2)) 2) 12) (= (eval '(- (+ x 6) (- 4 (- 2 x))) 2) 4) (= (eval '(pow (* 2 x) 3) 2) 64) ;; Q3 (equal? (symb-diff 4) 0) (equal? (symb-diff 'x) 1) (equal? (symb-diff '(+ 3 x)) '(+ 0 1)) (equal? (symb-diff '(- 3 x)) '(- 0 1)) (equal? (symb-diff '(* 4 x)) '(+ (* 0 x) (* 1 4))) (equal? (symb-diff '(/ 4 x)) '(/ (- (* 0 x) (* 1 4)) (pow x 2))) (equal? (symb-diff '(pow x 3)) '(* 3 (* (pow x 2) 1))) (equal? (symb-diff '(pow (* (+ 3 x) (/ 3 x)) 3)) '(* 3 (* (pow (* (+ 3 x) (/ 3 x)) 2) (+ (* (+ 0 1) (/ 3 x)) (* (/ (- (* 0 x) (* 1 3)) (pow x 2)) (+ 3 x)))))) ;; Q4 (= ((compile '(+ 2 x)) 3) 5) (= ((compile '(- x 3)) 10) 7) (= ((compile '(* 3 x)) 4) 12) (= ((compile '(/ (* 2 x) (+ x 3))) 3) 1) (= ((compile '(pow x 3)) 2) 8) (= ((compile '(+ (* 5 x) (pow (/ x 3) 2))) 6) 34)