開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: MIT/GNU Scheme
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の4(超言語的抽象)、4.1(超循環評価器)、4.1.2(式の表現)、問題 4.9を解いてみる。
その他参考書籍
問題 4.9
コード(BBEdit)
sample.scm
;; (while (predicate) <body>)
(define (while? exp) (tagged-list exp 'while))
(define (while-predicate exp) (cadr exp))
(define (while-body exp) (cddr exp))
(define (eval-while exp)
(make-if (while-predicate exp)
(make-begin (append (while-body exp)
exp))
'()))
;; (for (init) (predicate) (update) <body>)
(define (for? exp) (tagged-list exp 'for))
(define (for-init exp) (cadr exp))
(define (for-predicate exp) (caddr exp))
(define (for-update exp) (cadddr exp))
(define (for-body exp) (cddddr exp))
(define (eval-for exp)
(make-begin
(list (for-init exp)
(list 'while
(make-begin
(append (for-body exp)
(for-update exp)))))))
0 コメント:
コメントを投稿