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
ラムダ計算に基づいた純粋関数型言語の実装~ラスト~ #TechLunch
Search
Livesense Inc.
PRO
April 23, 2014
Technology
0
150
ラムダ計算に基づいた純粋関数型言語の実装~ラスト~ #TechLunch
20110713(水) @ Livesense TechLunch
発表者:塩足 拓也
Livesense Inc.
PRO
April 23, 2014
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
2.4k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
51
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.5k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
440
26新卒_総合職採用_会社説明資料
livesense
PRO
0
11k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
37k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
260
EM候補者向け転職会議説明資料
livesense
PRO
0
130
Other Decks in Technology
See All in Technology
シークレット管理だけじゃない!HashiCorp Vault でデータ暗号化をしよう / Beyond Secret Management! Let's Encrypt Data with HashiCorp Vault
nnstt1
3
230
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
470
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
RSCの時代にReactとフレームワークの境界を探る
uhyo
10
3.3k
エラーとアクセシビリティ
schktjm
1
1.2k
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
1
380
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
220
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
200
KotlinConf 2025_イベントレポート
sony
1
110
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
1
340
Obsidian応用活用術
onikun94
1
450
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
150
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Navigating Team Friction
lara
189
15k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
187
55k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Practical Orchestrator
shlominoach
190
11k
Rails Girls Zürich Keynote
gr2m
95
14k
KATA
mclloyd
32
14k
Transcript
ラムダ計算に基づいた純粋関数型 言語の実装 2011/07/13 Takuya Shiotari ~ラスト~
Agenda Review(Digest) • Lambda Calculus • Bound Variable and
Free Variable • Reduction Rule Definition • Beta Reduction • Alpha conversion Implementation
Review(Lambda calculus) 関数の定義と実行を抽象化した計算モデル <expr> ::= <identifier> | (“λ” <identifier> “.”
<expr>) | (<expr> <expr>) 変数 ラムダ抽象 関数適用
Review(Bound Variable and Free Variable) 束縛変数(Bound Variable) ラムダ抽象によって束縛(bound)された変数 自由変数(Free Variable)
ラムダ抽象によって束縛(bound)されていない変数 FV(x) = {x}, where x is a variable FV(λx.M) = FV(M) \ {x} FV(M N) = FV(M) ∪ FV(N)
Review(Reduction Rule) α-conversion β-reduction 束縛変数は自由変数やその他の束縛変数と重複しないように名前 を書き換える ラムダ計算の式を実行すること
Definition • 構文だけ定義しても意味が無い • それが何を意味するかを定義する必要がある
Definition(Beta Reduction) 関数λx.M1に引数M2を適用したら、、、 (λx.M1) M2 → [M2/x]M1 まず、xにM2が代入され、、、 それから関数の中身であるM1が実行されるはず Definition
(R-Beta)
Definition(Beta Reduction) Example 1. (λx.x) y → [y/x] x →
y 2. (λx.λy.x) z → [z/x] λy.x → λy.z 3. (λx.x)(λy.y) → [λy.y/x] x → λy.y 4. (λa.b)cd → ?
Definition(Beta Reduction) M1 → M1' M1 M2 → M1' M2 Definition
(R-App1) R-Betaは適用される関数がλ抽象の形になっているこ とを要求 今回は適用される関数が(λa.b)cという関数適用の形 をしている そこで、また新たな変換規則を導入、、、
Definition(Beta Reduction) (λa.b)cd → (λa.b)c → [c/a] b → b
R-Beta (λa.b)cd → bd R-App1 bd →
Definition(Beta Reduction) M2 → M2' M1 M2 → M1 M2' Definition
(R-App2) 同様の理由で関数適用M1 M2において引数M2 を簡約する規則も必要
Definition(Beta Reduction) Question? λ抽象λx.eにおいてeを簡約する、以下の規 則は必要? M → M' λx.M → λx.M'
Definition (R-Abs)
Definition(Alpha Conversion) (λx.λy.xy)y → [y/x] λy.xy → λy.y y •
1番目・2番目のyと3番目のyは別々の変数 • 別々の変数なのに同一視してしまったため、誤った簡約 を行ってしまった • 1番目・2番目のyは仮引数なので、名前は何でも良い (置き換え可能) • 簡約する前に、名前を置き換える (λx.λy.xy)y → (λx.λy'.xy')y → λy'.y y' この名前置き換えのことをα変換という
Definition(Alpha Conversion) [M2/x] y = [M2/x] (λy.M) = λy'.[M2/x]([y'/y] M)
[M2/x] (M M') = ([M2/x] e) ([M2 / x] M') Definition M2 (x == y)の場合 y (x != y)の場合
Implementation そーす
Next Time...