;; an exp is either
;;  - number
;;  - (make-op exp (number number -> number) exp)
(define-struct op (left fun right))

Translate the following Scheme expressions into exps. Be careful about the order of the arguments to make-op.

(+ 1 2)

(+ (* 2 3) 4)

(* (* 3 2) (+ 2 3))

Solution

(make-op 1 + 2)
(make-op (make-op 2 * 3) + 4)
(make-op (make-op 3 * 2) * (make-op 2 + 3))