<!-- @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
本文介绍了一系列使用Scheme语言实现的基本函数,包括累加求和、创建缩写、反转句子等,并详细展示了每种函数的工作原理及实现方式。
4094

被折叠的 条评论
为什么被折叠?



