练习2.73-练习2.74

版权声明:本文为博主原创文章,转载请注明出处,谢谢!

版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2014/02/07/2014-02-07-练习2.73-练习2.74/

访问原文「练习2.73-练习2.74

1.练习2.73
a
没有必要
b

1
2
3
4
5
6
(define (insert-sum-proc)
(define (deriv-sum exp var)
(make-sum (deriv (car exp) var)
(deriv (cadr exp) var)))
(put 'deriv '+ deriv-sum)
'done)
1
2
3
4
5
6
7
8
9
(define (insert-mult-proc)
(define (deriv-mult exp var)
(make-sum
(make-product (car exp)
(deriv (cadr exp) var))
(make-product (deriv (car exp) var)
(cadr exp))))
(put 'deriv '* deriv-mult)
'done)

cd
改变put和get的顺序
2.练习2.74
a

1
2
3
4
5
;;提供分支机构的名称,即brcanch
(define (get-record branch name)
(cond ((null? branch) false)
((null? name) false)
(else ((get 'get-record branch) name))))

b

1
2
3
4
5
;;提供分支机构的名称,即brcanch
(define (get-salary branch name)
(cond ((null? branch) false)
((null? name) false)
(else ((get 'get-salary branch) name))))

c

1
2
3
4
5
6
7
(define (find-employee-record name branchs)
(if (null? branchs)
false
(let ((record ((get 'get-record (branch-name (car branchs))) name)))
(if (null? record)
(find-employee-record name (cdr branchs))
record))))

d将新人事的方法注册到表中,即put进去。

Jerky Lu wechat
欢迎加入微信公众号