CS-105 Homework #3 Solutions

* note: there is a wide range of possibilities for most of the problems. This is just one possible set of solutions.


Exercise 7.9
every -> word
keep -> word?
accumulate -> sentence
Exercise 7.13

(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 '?)))


Exercise 7.14

(define (subword wd start end)
  ((repeated bf (- start 1))
   ((repeated bt (- (count wd) end)) wd)))


Exercise 8.13

(define (substitute word1 word2 sent)
  (every (lambda (x)
	   (if (equal? x word2)
	       word1
	       x))
	 sent))


Exercise 8.15

(define (aplize function)
  (lambda (x)
    (if (sentence? x)
        (every function x)
	(function x))))


Exercise 8.16

(define (keep predicate sent)
  (accumulate sentence (every (lambda (x)
				(if (predicate x)
				    x
				    '()))
			      sent)))


© Yevgeny Ostrovsky - 1998