simply scheme 第八章 练习
8.1
(a e i o u)
()
0
#f
(16 144 0)
(aioee)
25
(go d sunshi)
8.2
(keep vowel? 'birthday)
(every first '(golden slumbers))
(first '(golden slumbers))
(every last '(little child))
> (accumulate word (every last '(little child)))
(every + '(2 3 4 5))
(accumulate + '(2 3 4 5))
8.4
(define (choose-beatles f)
(keep f '(john paul george ringo)))
8.5
(define (transform-beatles f)
(every f '(john paul george ringo)))
8.6
(define (words wd)
(every convert wd))
(define (convert x)
(cond((equal? x 'a) 'about)
((equal? x 'b) 'bring)
((equal? x 'c) 'cab)
((equal? x 'd) 'digit)
((equal? x 'e) 'erection)
((equal? x 'f) 'fail)
((equal? x 'g) 'gtalk)
((equal? x 'h) 'hello)
((equal? x 'i) 'intern)
((equal? x 'j) 'jack)
((equal? x 'k) 'knight)
((equal? x 'l) 'little)
((equal? x 'm) 'mom)
((equal? x 'n) 'nation)
((equal? x 'o) 'open)
((equal? x 'p) 'pantyhose)
((equal? x 'q) 'quit)
((equal? x 'r) 'right)
((equal? x 's) 'strong)
((equal? x 't) 'tight)
((equal? x 'u) 'up)
((equal? x 'v) 'villa)
((equal? x 'w) 'we)
((equal? x 'x) 'x)
((equal? x 'y) 'yes)
((equal? x 'z) 'zip)))
8.13
(define (phone-unspell wd)
(accumulate word(every con wd)))
(define (con wd)
(cond ((member? wd 'abc) 2)
((member? wd 'def) 3)
((member? wd 'ghi) 4)
((member? wd 'jkl) 5)
((member? wd 'mno) 6)
((member? wd 'pqrs) 7)
((member? wd 'tuv) 8)
((member? wd 'wxyz) 9)))
8.14
(define (subword wd s e)
((repeated bl(-(count wd) e))((repeated bf(- s 1))wd)))