問題4.6 – SICP(計算機プログラムの構造と解釈)その179
2009年05月15日
問題4.6
(define (eval exp env) (cond ((self-evaluating? exp) exp) ; 省略 ((let? exp) (eval (let->combination exp) env)) ; 省略 (else (error "Unknown expression type -- EVAL" exp)))) ;;;; let 式 (define (let? exp) (tagged-list? exp 'let)) (define (let-clauses exp) (cdr exp)) (define (let-bindings clauses) (car clauses)) (define (let-body clauses) (cdr clauses)) (define (let->combination exp) (expand-let-clauses (let-clauses exp))) (define (expand-let-clauses clauses) (if (null? (let-bindings clauses)) '() (cons (make-lambda (map car (let-bindings clauses)) (let-body clauses)) (map cadr (let-bindings clauses)))))
実行結果
;;; M-Eval input: (define (foo x) (let ((a 2) (b 5)) (+ (* x a) b))) ;;; M-Eval value: ok ;;; M-Eval input: (foo 3) ;;; M-Eval value: 11
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542