問題5.41 – SICP(計算機プログラムの構造と解釈)その292
2009年12月25日
問題5.41
(define (find-variable var ct-env) (define (frame-iter var frames frame-number) (if (null? frames) 'not-found (let ((addr (scan-iter var (car frames) frame-number 0))) (if (null? addr) (frame-iter var (cdr frames) (+ frame-number 1)) addr)))) (define (scan-iter var frame frame-number displacement-number) (if (null? frame) '() (if (eq? var (car frame)) (make-lexical-address frame-number displacement-number) (scan-iter var (cdr frame) frame-number (+ displacement-number 1))))) (frame-iter var ct-env 0))
実行結果
(find-variable 'c '((y z) (a b c d e) (x y))) gosh> (1 2) (find-variable 'x '((y z) (a b c d e) (x y))) gosh> (2 0) (find-variable 'w '((y z) (a b c d e) (x y))) gosh> not-found
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542