理系学生日記

おまえはいつまで学生気分なのか

問題2-74c (2.4.3 Data-Directed Programming and Additivity)

全部署のファイルから、従業員のレコードを探してこいって問題です。
なんかもう、都合のいいように仮定しまくった。

(define (find-employee-record employee-name files)
  (if (null? files)
      #f
      (let ((top-file (car files)))
	(let ((result (get-record (division top-file)
				  top-file
				  employee-name)))
	  (if result
	      result
	      (find-employee-record employee-name (cdr files)))))))

get-recordは、ファイルの中に従業員のレコードがないときは#fを返す。
divisionはファイルを見て部署名を返す。