您的位置:首页 > 编程语言 > Go语言

simply scheme 第八章 练习

2010-07-06 14:05 134 查看
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.7

(define (letter-count sent)
  (accumulate +(every always-one (every first (accumulate word sent)))))
(define (always-one arg)
  1)
8.10

(define (true-for-all? f arg)
  (equal? (count (keep f arg)) (count arg)))
8.11

(define (grade-modifier wd)
  (cond((equal? (last wd) '+) .33)
       ((equal? (last wd) '-) -.33)
       (else 0)))
(define (base-grade wd)
  (cond((equal? (first wd) 'A) 4)
       ((equal? (first wd) 'B) 3)
       ((equal? (first wd) 'C) 2)
       ((equal? (first wd) 'D) 1)
       ((equal? (first wd) 'F) 0)))
(define (grade wd)
  (+ (base-grade wd) (grade-modifier wd)))
(define (gpa sent)
  (/ (accumulate +(every grade sent))(count sent)))
8.12

(define (count-ums sent)
  (count (keep um? sent)))
(define (um? wd)
  (equal? wd 'um))

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)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scheme go up c