21. Two Actions, One Tick

We will start by a using an analogy to talk about doing multiple actions in one tick handler.

Math Analogy

Suppose you have two functions, f and g. The f function takes its input, multiplies by three, and adds one. The g function takes its input, squares it, and subtracts 9. Make a new h function that takes it input, multiplies by 3, adds one, then squares the answer and subtracts 9.

(define (f x) (+ (* 3 x) 1))
(define (g x) (- (sqr x) 9))

Big-bang

You can combine two tick-handler actions into one by using “function composition”:

; first-action: model -> model
; second-action: model -> model
; tick-handler: model -> model
(define (tick-handler model)
   (second-action (first-action model)))

Try combining the ball bouncing and ball moving actions in this way.