+ by *.
free?.
apply-ff to not
assume *fail* (or any other specific value) is outside of
the finite function's range. Exercise 3.6.3 on page 98 suggests one
way to do this, but there are others at least as good. A test of your
code might look like:
(define ff1 (extend-ff* '(a b c d) '(7 #f *fail* 9) (create-empty-ff)))
(apply-ff ff1 'b) => #f
(apply-ff ff1 'c) => *fail*
(apply-ff ff1 'e) => call to (error "empty-ff: no association for symbol" symbol)