<!-- @page { margin: 2cm } PRE.western { font-family: "DejaVu Sans Mono", monospace } PRE.cjk { font-family: "AR PL UKai CN", monospace } PRE.ctl { font-family: "DejaVu Sans Mono", monospace } P { margin-bottom: 0.21cm } -->
12.1 (define (addup nums) (if (empty? nums) 0 (+ (first nums)(addup (bf nums))))) 12.2 (define (acronym sent) (if(=(count sent) 1) (first(first sent)) (word(first(first sent)) (acronym(bf sent))))) 12.3 no if do that n!==0 12.4 (define (f sent) (if(empty? sent) '() (se (f (bf sent))(first sent)))) reverse the sentence 12.5 (define (exaggerate sent) (if(empty? sent) '() (se ((lambda(wd)(if(number? wd)(* 2 wd) wd))(first sent)) (e(bf sent))))) 12.6 (define (gpa sent) (/ (gpa-c sent) (count sent))) (define (gpa-c sent) (if(empty? sent) 0 (+ (gpa-m (first sent)) (gpa-p (first sent)) (gpa-c (bf sent))))) (define (gpa-m 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 (gpa-p wd) (cond((equal? (last wd) '+)0.33) ((equal? (last wd) '-)-0.33) (else 0))) 12.7 (define (spell-number num) (if(empty? num) '() (se (spell-digit(first num))(spell-number (bf num))))) (define (spell-digit digit) (item (+ 1 digit) '(zero one two three four five six seven eight nine ten))) 12.8 (define (numbers sent) (if(empty? sent) '() (se ((lambda(x)(if(number? x)x '()))(first sent)) (numbers (bf sent))))) 12.9 (define (real wd) (not (member? wd '(a the an in of and for to with)))) (define (real-word sent) (if(empty? sent) '() (se ((lambda(wd)(if(real wd)wd '()))(first sent)) (real-word (bf sent))))) 12.10 (define (remove wd sent) (if(empty? sent) '() (se ((lambda(w)(if(equal? w wd)'() w))(first sent)) (remove wd (bf sent))))) 12.11 (define (count x) (if(empty? x) 0 (+ 1 (count (bf x))))) 12.12 (define (roman-value letter) (cond((equal? letter 'i)1) ((equal? letter 'v)5) ((equal? letter 'x)10) ((equal? letter 'l)50) ((equal? letter 'c)100) ((equal? letter 'd)500) ((equal? letter 'm)1000))) (define (a wd) (if(=(count wd)1) (roman-value wd) (+ ((lambda(w) (if(< (roman-value (first w)) (roman-value (first(bf w)))) (- (roman-value (first w))) (roman-value(first w)))) wd) (a (bf wd))))) 12.13 can't