2013年9月1日日曜日

開発環境

計算機プログラムの構造と解釈(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 コメント:

コメントを投稿