;; A pizza is either a circular pizza or a rectangular pizza ;; c_pizza -- circular pizza with radius (define-struct c_pizza (radius)) ;; r_pizza -- rectangular pizza with a width and length (define-struct r_pizza (w l)) ;; lop -- list of pizzas ;; lop_area: lop --> num ;;total area of a lop (define (lop_area a-lop) (cond [(empty? a-lop) 0] [(cons? a-lop) (+ (pizza_area (first a-lop)) (lop_area (rest a-lop)))])) ;; pizza_area: pizza --> area ;; area of a pizza (define (pizza_area p) (cond [(c_pizza? p) (* pi (sqr (c_pizza-radius p)))] [(r_pizza? p) (* (r_pizza-w p)(r_pizza-l p))])) (define myPizzas (list (make-c_pizza 10) (make-r_pizza 5 8) (make-r_pizza 10 7) (make-c_pizza 12))) "lop_area test:" (lop_area empty) (lop_area (list (make-c_pizza 1))) (lop_area (list (make-r_pizza 2 3))) (lop_area myPizzas)