問題4.28 – SICP(計算機プログラムの構造と解釈)その202
2009年06月15日
問題4.28
演算子が手続きの場合に、演算子を強制する必要がある。
演算子の強制をする場合
((application? exp) (apply (actual-value (operator exp) env) (operands exp) env))
;;; L-Eval input: (define (foo x) (+ x 1)) ;;; L-Eval value: ok ;;; L-Eval input: (foo 2) ;;; L-Eval value: 3 ;;; L-Eval input: (define (hoge proc) (proc 10)) ;;; L-Eval value: ok ;;; L-Eval input: (hoge foo) ;;; L-Eval value: 11
演算子の強制をしない場合
((application? exp) (apply (eval (operator exp) env) (operands exp) env))
;;; L-Eval input: (define (foo x) (+ x 1)) ;;; L-Eval value: ok ;;; L-Eval input: (foo 2) ;;; L-Eval value: 3 ;;; L-Eval input: (define (hoge proc) (proc 10)) ;;; L-Eval value: ok ;;; L-Eval input: (hoge foo) *** ERROR: Unknown procedure type -- APPLY (thunk foo #0=(((hoge foo false true car cdr cons null? assoc + - * / = < > print) (procedure (proc) ((proc 10)) #0#) (procedure (x) ((+ x 1)) #0#) #f #t (primitive #<subr car>) (primitive #<subr cdr>) (primitive #<subr cons>) (primitive #<subr null?>) (primitive #<subr assoc>) (primitive #<subr +>) (primitive #<subr ->) (primitive #<subr *>) (primitive #<subr />) (primitive #<subr =>) (primitive #<subr <>) (primitive #<subr >>) (primitive #<closure print>))))Stack Trace: _______________________________________ 0 (eval exp env) At line 54 of "./eval_with_delay.scm" 1 (actual-value input the-global-environment) At line 405 of "./eval_with_delay.scm"
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542