2013年6月16日日曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の2(データによる抽象の構築)、2.4(抽象データの多重表現)、2.4.3(データ主導プログラミングと加法性)の問題 2.74、a、b、c、dを解いてみる。

その他参考書籍

問題 2.74

コード

sample.scm

;; a.
;; 事業所ファイルには、一意となるような事業所名のような型情報を
;; 追加する必要がある
;; その型情報を取得する手続き(リストの先頭が型情報と仮定)
(define (office employee-file) (car employee-file))

(define (get-record employee-file employee-name)
  ((get 'get-record (office employee-file)) employee-name))

;; b.
;; 各従業員のレコードに型情報、その従業員の事業所を追加
;; 従業員のレコードから、その従業員の型情報、事業所を取得する手続き
;; (リストの先頭に型情報を追加したと仮定)
(define (office-1 employee-record) (car employee-record))

(define (get-salary employee-record)
  ((get 'get-salary (office-1 employee-record)) employee-record))

;; c.
(define (find-employee-record employee-name employee-file-list)
  (if (null? employee-file-list)
      (error "can't find name -- FIND-EMPLOYEE-RECORD" employee-name)
      (find-employee-record employee-name (cdr employee-file-list))))

;; d.
;; 合併した別の会社を一つの独立した事業所とし、既存のデータ構造と同じように
;; 従業員ファイル、従業員レコードを構造化して、一つの事業所として追加すればいい。  

なんかすっきりと説明できてないっぽいけどこんな感じでいいのかなぁ。

0 コメント:

コメントを投稿