* 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)))