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
110
YAPC::Asia Tokyo 2014 僕が担当した運営の話
monmon
0
1.3k
Other Decks in Technology
See All in Technology
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
300
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
200
Observability — Extending Into Incident Response
nari_ex
1
590
AI機能プロジェクト炎上の 3つのしくじりと学び
nakawai
0
160
re:Inventに行くまでにやっておきたいこと
nagisa53
0
750
Retrospectiveを振り返ろう
nakasho
0
140
仕様駆動開発を実現する上流工程におけるAIエージェント活用
sergicalsix
8
4.4k
20251027_findyさん_音声エージェントLT
almondo_event
2
500
AI時代、“平均値”ではいられない
uhyo
8
2.8k
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
1
210
What's new in OpenShift 4.20
redhatlivestreaming
0
390
Azure Well-Architected Framework入門
tomokusaba
1
150
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Building an army of robots
kneath
306
46k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
940
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How STYLIGHT went responsive
nonsquared
100
5.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
670
Producing Creativity
orderedlist
PRO
348
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Designing Experiences People Love
moore
142
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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