Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
sicp 3.2 評価の環境モデル
Search
monmon
June 03, 2013
Technology
0
320
sicp 3.2 評価の環境モデル
せっかく環境モデルを絵で書いたことだしuploadするんだ
monmon
June 03, 2013
Tweet
Share
More Decks by monmon
See All by monmon
koba04 さんとワイワイJavaScript勉強会
monmon
0
120
YAPC::Asia Tokyo 2014 僕が担当した運営の話
monmon
0
1.3k
Other Decks in Technology
See All in Technology
Microsoft Fabricで考える非構造データのAI活用
ryomaru0825
0
190
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
260
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
460
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
Cursor Subagentsはいいぞ
yug1224
2
110
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
150
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Phase01_AI座学_基礎
overflowinc
0
4.5k
Navigation APIと見るSvelteKitのWeb標準志向
yamanoku
2
120
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
qa
0
360
脳が溶けた話 / Melted Brain
keisuke69
1
1.1k
パワポ作るマンをMCP Apps化してみた
iwamot
PRO
0
170
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.2k
A Soul's Torment
seathinner
5
2.5k
We Have a Design System, Now What?
morganepeng
55
8k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
89
Designing for humans not robots
tammielis
254
26k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
330
The SEO identity crisis: Don't let AI make you average
varn
0
420
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
sira's awesome portfolio website redesign presentation
elsirapls
0
200
Transcript
sicp 3.2 評価の環境モデル p.138 - p.142まで くまがいのぶお(monmon) @lesamoureuses
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式を
評価して作り出す。結果の手続きオブジェクトは lambda式の本文と手続きが作り出された時の 環境へのポインタである。
まずは手続き定義
例:大域環境で(define (square x) (* x x))を評価し て生じた環境構造
(define (square x) (* x x)) これはlambda式の構文シュガーで、 (define square (lambda
(x) (* x x))) と等価 (話を進める前の前提)手続き定義の構文 について
実際に規則を見ていく
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式
を評価して作り出す。結果の手続きオブジェクト はlambda式の本文と手続きが作り出された時 の環境へのポインタである。
他の変数 大域環境
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式
を評価して作り出す。結果の手続きオブジェクト はlambda式の本文と手続きが作り出された時 の環境へのポインタである。
(define (square x) (* x x)) これはlambda式の構文シュガーで、 (define square (lambda
(x) (* x x))) と等価
他の変数 大域環境
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式
を評価して作り出す。結果の手続きオブジェクト はlambda式の本文と手続きが作り出された時 の環境へのポインタである。
他の変数 大域環境 パラメタ: x 本体: (* x x)
手続き作用の環境モデルの二つの規則 (の補足?) またdefineを使った記号の定義は、現在の環境フ レームで束縛を作り出し、表示された値をその記 号に割り当てる。
他の変数 square: 大域環境 パラメタ: x 本体: (* x x) (define
(square x) (* x x))
つぎに手続き作用
例:(square 5)を評価する時 に作り出された環境構造
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式を
評価して作り出す。結果の手続きオブジェクトは lambda式の本文と手続きが作り出された時の 環境へのポインタである。
他の変数 square: 大域環境 パラメタ: x 本体: (* x x) (square
5) E1
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式を
評価して作り出す。結果の手続きオブジェクトは lambda式の本文と手続きが作り出された時の 環境へのポインタである。
他の変数 square: 大域環境 パラメタ: x 本体: (* x x) (square
5) x: 5 E1
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式を
評価して作り出す。結果の手続きオブジェクトは lambda式の本文と手続きが作り出された時の 環境へのポインタである。
他の変数 square: 大域環境 パラメタ: x 本体: (* x x) (square
5) x: 5 E1
手続き作用の環境モデルの二つの規則 1. 手続きオブジェクトを一組の引数に作用させる には、フレームを構成し、手続きの仮パラメタ を、その呼び出しの引数に束縛し、それから今 構成した新しい環境の文脈で、手続きの本体を 評価する。新しいフレームは外側の環境として、 作用させている手続きの環境部分を持つ。 2. 手続きを、与えられた環境に関してlambda式を
評価して作り出す。結果の手続きオブジェクトは lambda式の本文と手続きが作り出された時の 環境へのポインタである。
他の変数 square: 大域環境 パラメタ: x 本体: (* x x) (square
5) x: 5 E1 (* x x)
E1 で x の値は 5 だから 結果は (* 5 5)
つまり 25
(factorial 6) を再帰版 (define (factorial n) (if (= n 1)
1 (* n (factorial (- n 1))))) を使って評価する時、作り出される環境構造を示 せ q3.9
他の変数 factorial: 大域環境 パラメタ: n 本体: (if (= n 1)
1 (* n (factorial (- n 1))))
他の変数 factorial: 大域環境 パラメタ: n 本体: (if (= n 1)
1 (* n (factorial (- n 1)))) n: 6 E1 (if (= n 1) 1 (* n (factorial (- n 1)))) (factorial 6)
大域環境 n: 6 E1 (if (= n 1) 1 (*
n (factorial (- n 1)))) n: 5 E2 (if (= n 1) 1 (* n (factorial (- n 1))))
大域環境 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
(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
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)
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))
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