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
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
180
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
760
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
840
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
240
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
200
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
2
3.1k
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Featured
See All Featured
Side Projects
sachag
455
43k
Into the Great Unknown - MozCon
thekraken
40
2.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
AI: The stuff that nobody shows you
jnunemaker
PRO
2
270
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
KATA
mclloyd
PRO
34
15k
The browser strikes back
jonoalderson
0
400
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Why Our Code Smells
bkeepers
PRO
340
58k
The untapped power of vector embeddings
frankvandijk
1
1.6k
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