2015/10/30
SICP 問題 2.74
;; a
;; 各事業所ごとに従業員ファイルを作っていると考え,person-fileのcar部に
;; 従業所を識別するコードを入れるようにする.
(define (get-record name person-file)
((get 'get-record (division person-file)) name file))
(define (division file) (car file))
;; b
;; ここではrecordが(name salary age)となってると考える.
;; この事業所のrecordからsalaryを取り出すにはcadrを取れば良い
(define (get-salary name record)
((get 'get-salary (identifying person-file)) record))
;; c
(define (find-employee-record name division-list)
(if (null? division-list)
false
(let ((serch (lambda (x) ((get 'get-record (division x)) name x))))
(if (serch (car division-list))
(serch (car division-list))
(find-employee-record name (cdr division-list))))))
;; d
;; その新しく合併した会社の従業員レコードから情報を得るget-recordとget-salaryなどの
;; 必要な手続きを作りパッケージを作成し,本社の表にputすればよい.