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
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[資料] 静的束縛と動的束縛の違い
図で理解するとわかりやすい説
zk-phi
July 24, 2019
More Decks by zk-phi
See All by zk-phi
[LT] 最近遊んだインディーゲーム
zk_phi
0
210
[LT] ちょっと賢く酒を飲む
zk_phi
0
290
[LT] 渋谷発おすすめ散歩ルート
zk_phi
0
250
[LT] ビールじゃない話
zk_phi
0
330
今週末できるお手軽ビアテイスティング
zk_phi
1
170
[LT] ビールが面白い話・2
zk_phi
1
410
[LT] 早押しクイズが楽しい話
zk_phi
0
260
[LT] ビールがおもしろい話
zk_phi
2
240
[LT] OpenSCAD でキーボード設計
zk_phi
0
820
Other Decks in Programming
See All in Programming
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
FDEが実現するAI駆動経営の現在地
gonta
2
280
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
180
Building a Meta Ray-Ban display app
akkeylab
0
160
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
380
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
200
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
源内ハンズオン概要編
hideg
0
190
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
5
1.8k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
190
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Mobile First: as difficult as doing things right
swwweet
225
10k
Designing Experiences People Love
moore
143
24k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
400
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
800
Skip the Path - Find Your Career Trail
mkilby
1
180
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
490
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
400
Navigating Weather and Climate Data
rabernat
0
480
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 当時の環境