Exercise 4.4.2: (back)
;; constants
(define hourly-rate 12)
;; tax : number -> number
;; Example (tax 120) -> 0
;; Example (tax 350) -> 52.5
;; Example (tax 700) -> 196
(define (tax pay)
(cond
[(<= pay 240) 0]
[(<= pay 480) (tax-owed pay 15.0)]
[(> pay 480) (tax-owed pay 28.0)]))
;; tax-owed : number number -> number
(define (tax-owed pay rate)
(* (/ rate 100) pay))
;; netpay : number -> number
;; Example (netpay 15) -> 180
;; Example (netpay 35) -> 255
;; Example (netpay 70) -> 604.80
(define (netpay hours)
(- (gross-pay hours) (tax (gross-pay hours))))
;; gross-pay : number -> number
(define (gross-pay hours)
(* hours hourly-rate))