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
[資料] 静的束縛と動的束縛の違い
Search
zk-phi
July 24, 2019
Programming
720
0
Share
[資料] 静的束縛と動的束縛の違い
図で理解するとわかりやすい説
zk-phi
July 24, 2019
More Decks by zk-phi
See All by zk-phi
[LT] 最近遊んだインディーゲーム
zk_phi
0
210
[LT] ちょっと賢く酒を飲む
zk_phi
0
280
[LT] 渋谷発おすすめ散歩ルート
zk_phi
0
240
[LT] ビールじゃない話
zk_phi
0
320
今週末できるお手軽ビアテイスティング
zk_phi
1
170
[LT] ビールが面白い話・2
zk_phi
1
410
[LT] 早押しクイズが楽しい話
zk_phi
0
250
[LT] ビールがおもしろい話
zk_phi
2
230
[LT] OpenSCAD でキーボード設計
zk_phi
0
810
Other Decks in Programming
See All in Programming
Swift Concurrency Type System
inamiy
0
410
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.3k
存在論的プログラミング: 時間と存在を記述する
koriym
5
840
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
150
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
170
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
120
20260320登壇資料
pharct
0
170
Feature Toggle は捨てやすく使おう
gennei
0
510
Don't Prompt Harder, Structure Better
kitasuke
0
640
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
3
790
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
It's Worth the Effort
3n
188
29k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
How to Ace a Technical Interview
jacobian
281
24k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
460
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
440
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
720
Test your architecture with Archunit
thirion
1
2.2k
Exploring anti-patterns in Rails
aemeredith
3
310
Transcript
静的束縛と動的束縛の話
静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する
(let ((a 1) (b 2)) (print a)) ;; => 1
a => 1 b => 2 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
(let ((a 1) (b 2)) (setq a 100) (print a))
;; => 100 a => 100 b => 2 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
(let ((a 1) (b 2)) (let ((a 2)) (print a)))
;; => 2 a => 1 b => 2 a => 2 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
(let ((a 1) (b 2)) (let ((a 2)) (setq a
200) (print a))) ;; => 200 a => 1 b => 2 a => 200 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
(let ((a 1) (b 2)) (let ((a 2)) (setq a
200) (print a)) (print a)) ;; => 1 a => 1 b => 2 a => 200 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する ここまではわりと素直 ややこしいのは式がスコープをまたいで実⾏される時
(let ((a 1) (b 2)) (let ((f (λ () (print
a)))) (f))) ;; => 1 a => 1 b => 2 f => #<fn> 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境
(let ((a 1) (b 2)) (let ((f (λ () (print
a)))) (let ((a 2)) (f)))) ;; => ?? a => 1 b => 2 f => #<fn> 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する a => 2 当時の環境 最新の環境
静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する ここまではわりと素直 ややこしいのは式がスコープをまたいで実⾏される時 ・静的束縛は「式が書かれた時点での最新の環境」を参照する ・動的束縛はいつも「最新の環境」を参照する
(let ((a 1) (b 2)) (let ((f (λ () (print
a)))) (let ((a 2)) (f)))) ;; => 静的:1, 動的:2 a => 1 b => 2 f => #<fn> 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する a => 2 当時の環境 最新の環境
静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する ここまではわりと素直 ややこしいのは式がスコープをまたいで実⾏される時 ・静的束縛は「式が書かれた時点での最新の環境」を参照する ・動的束縛はいつも「最新の環境」を参照する
代⼊がどの環境を書き換えるかも同様
(let ((a 1) (b 2)) (let ((f! (λ () (setq
a 100)))) (let ((a 2)) (f!))) (print a)) ;; => 静的:100, 動的:1 a => 1 100 b => 2 f => #<fn> 静的束縛と動的束縛の話 ⼤前提 ・スコープはネスト (スタック) する ・原則として、内側のスコープが外側のスコープに優先する 最新の環境 a => 100 2 当時の環境