Upgrade to Pro — share decks privately, control downloads, hide ads and more …

sicp 3.2 評価の環境モデル

Avatar for monmon monmon
June 03, 2013

sicp 3.2 評価の環境モデル

せっかく環境モデルを絵で書いたことだしuploadするんだ

Avatar for monmon

monmon

June 03, 2013
Tweet

More Decks by monmon

Other Decks in Technology

Transcript

  1. (define (square x) (* x x)) これはlambda式の構文シュガーで、 (define square (lambda

    (x) (* x x))) と等価 (話を進める前の前提)手続き定義の構文 について
  2. (factorial 6) を再帰版 (define (factorial n) (if (= n 1)

    1 (* n (factorial (- n 1))))) を使って評価する時、作り出される環境構造を示 せ q3.9
  3. 他の変数 factorial: 大域環境 パラメタ: n 本体: (if (= n 1)

    1 (* n (factorial (- n 1)))) n: 6 E1 (if (= n 1) 1 (* n (factorial (- n 1)))) (factorial 6)
  4. 大域環境 n: 6 E1 (if (= n 1) 1 (*

    n (factorial (- n 1)))) n: 5 E2 (if (= n 1) 1 (* n (factorial (- n 1))))
  5. 大域環境 n: 6 E1 (if (= n 1) 1 (*

    n (factorial (- n 1)))) n: 5 E2 n: 4 E3 n: 3 E4 n: 2 E5 n: 1 E6
  6. (factorial 6) を反復版 (define (factorial n) (fact-iter 1 1 n))

    (define (fact-iter product counter max-count) (if (> counter max-count) product (fact-iter (* counter product) (+ counter 1) max-count))) を使って評価する時、作り出される環境構造を示せ q3.9
  7. factorial: fact-iter: 大域環境 パラメタ: product, counter, max-count 本体: (if (>

    counter max-count) product (fact-iter (* counter product) (+ counter 1) max-count)) パラメタ: n 本体: (fact-iter 1 1 n)
  8. factorial: fact-iter: 大域環境 n: 6 E1 (fact-iter 1 1 n)

    (factorial 6) product: 1 counter: 1 max-count: 6 E2 (if (> counter max-count) product (fact-iter (* counter product) (+ counter 1) max-count)) product: 1 counter: 2 max-count: 6 E3 (if (> counter max-count) product (fact-iter (* counter product) (+ counter 1) max-count))
  9. factorial: fact-iter: 大域環境 (factorial 6) product: 1 counter: 1 max-count:

    6 E2 product: 1 counter: 2 max-count: 6 E3 product: 2 counter: 3 max-count: 6 E4 product: 6 counter: 4 max-count: 6 E5 product: 24 counter: 5 max-count: 6 E6 product: 120 counter: 6 max-count: 6 E7 product: 720 counter: 7 max-count: 6 E8