simply scheme 第九章 练习

<!-- @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 } -->

9.1

(1) #<procedure>

(2) 34

(3) (yan etim ta lal)

(4) #<procedure>: expects 1 argument, given 2: 10 15

9.2

(define second (lambda (stuff)(first(bf stuff))))

(define make-adder (lambda (x) (lambda(x)(+ num x))))

9.3

the last word of a sentence or the last letter of a word

9.4

(define (who sent)

  (every (lambda (person)(se person sent)) '(pete roger john keith)))

9.5

(define (prepend-every wd sent)

  (every (lambda (p)(word wd p))sent))

9.6

(define (sentence-version f)

  (lambda (y) (every f y)))

9.7

(define (l letter sent)

  (keep (lambda (p)(member? letter p))sent))

9.8

(define (generate wd s)

  (every (lambda (p)(if(member? p s)p '_))wd))

9.9

(define (c s1 s2)

  (keep (lambda (p)(member? p s2))s1))

9.10

9.11

(define (unabbrev s1 s2)

  (every 

   (lambda (x)

     (if(number? x)

         ((lambda (a s)(first((repeated bf (- a 1))s)))x s2)

        x))

   s1))

9.12

(define (first-last sent)

  (keep (lambda (wd) (equal? (last wd) (first wd))) sent))

9.13

(define (compose f g)

  (lambda (x)(f(g x))))

9.14

(define (s wd1 wd2 sent)

  (every (lambda (x) (if(equal? x wd2)wd1 x)) sent))

9.15

(define (type-check f g)

  (lambda(x)(if(g x)(f x)#f)))

9.16

(define (aplize f)

  (lambda(sent)(if(number? sent)(f sent)(every f sent))))

9.17

(define (keep f s)

  (every (lambda(x)(if(f x)x '()))s))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值