2015-12-18から1日間の記事一覧
make-ifに渡す前にclauseをpredicateとactionにわかる. (car action)に'=>があれば(cadr action)にpredicateを適用する. (define (expand-clauses clauses) (if (null? clauses) 'false ;; else 説は無い (let ((first (car clauses)) (rest (cdr clauses)…
;; and (define (and? exp) (tagged-list? exp 'and)) (define (and-clauses exp) (cdr exp)) (define (eval-and exp env) (let iter ((clauses (and-clauses exp))) (if (null? clauses) 'true (let ((first (eval (car clauses) env))) (cond ((null? (cdr…
;; evalをデータ主導スタイルに書き換える. ;; 本文で定義されたeval (define (eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-valiable-value exp env)) ((quoted? exp) (text-of-quotation exp)) ((assignment? exp) (eval-…
;; 本文のeval (define (eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-valiable-value exp env)) ((quoted? exp) (text-of-quotation exp)) ((assignment? exp) (eval-assignment exp env)) ((definition? exp) (eval-defini…