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
0
700
[資料] 静的束縛と動的束縛の違い
図で理解するとわかりやすい説
zk-phi
July 24, 2019
Tweet
Share
More Decks by zk-phi
See All by zk-phi
[LT] 最近遊んだインディーゲーム
zk_phi
0
190
[LT] ちょっと賢く酒を飲む
zk_phi
0
260
[LT] 渋谷発おすすめ散歩ルート
zk_phi
0
230
[LT] ビールじゃない話
zk_phi
0
300
今週末できるお手軽ビアテイスティング
zk_phi
1
150
[LT] ビールが面白い話・2
zk_phi
1
380
[LT] 早押しクイズが楽しい話
zk_phi
0
240
[LT] ビールがおもしろい話
zk_phi
2
220
[LT] OpenSCAD でキーボード設計
zk_phi
0
760
Other Decks in Programming
See All in Programming
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
180
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
0
120
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
870
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
230
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
310
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
240
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
480
Flutterで分数(Fraction)を表示する方法
koukimiura
0
140
Catch Up: Go Style Guide Update
andpad
0
230
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
1
320
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
2
560
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
350
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Faster Mobile Websites
deanohume
310
31k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Designing Experiences People Love
moore
142
24k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Raft: Consensus for Rubyists
vanstee
140
7.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
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 当時の環境