* note: there is a wide range of possibilities for most of the problems. This is just one possible set of solutions.
(define (phone-unspell wd)
(accumulate word (every numberize wd)))
(define (numberize l)
(cond ((member? l 'abc) 2)
((member? l 'def) 3)
((member? l 'ghi) 4)
((member? l 'jkl) 5)
((member? l 'mno) 6)
((member? l 'prs) 7)
((member? l 'tuv) 8)
((member? l 'wxy) 9)
(else '?)))
(define (subword wd start end) ((repeated bf (- start 1)) ((repeated bt (- (count wd) end)) wd)))
(define (substitute word1 word2 sent) (every (lambda (x) (if (equal? x word2) word1 x)) sent))
(define (aplize function)
(lambda (x)
(if (sentence? x)
(every function x)
(function x))))
(define (keep predicate sent) (accumulate sentence (every (lambda (x) (if (predicate x) x '())) sent)))