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すればよい.

© 2022 wat-aro