## Practice problems for Test 2

Before you take a look at the solutions, it is strongly recommended that you try to solve the problems on your own.

1. The procedure `type-check` from problem 9.15 can be written as follows:

(define (type-check f pred?)
(lambda (x)
(if (pred? x) (f x) #f)))

Write the procedure `safe-bf` in terms of `type-check`. Make
sure that `safe-bf` works for both sentences and words. It may be helpful
to recall that `safe-sqrt` was defined as follows:

(define safe-sqrt (type-check sqrt number?))

2. Write the predicate `num-vowels?` that takes a sentence as its
input and returns the number of vowels in the sentence.

> (num-vowels? '(i am cheese))
5

Write `num-vowels?`.

3. Predict what this will evaluate to, then try it in the interpreter to see if you got it right.

(accumulate (lambda (c1 c2) (word 'a c1 c2)) '(br c d br "" ""))