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
160
ラムダ計算に基づいた純粋関数型言語の実装~ラスト~ #TechLunch
20110713(水) @ Livesense TechLunch
発表者:塩足 拓也
Livesense Inc.
PRO
April 23, 2014
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
PRO
0
2.6k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
6.6k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
190
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
550
26新卒_総合職採用_会社説明資料
livesense
PRO
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
52k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
290
Other Decks in Technology
See All in Technology
20260204_Midosuji_Tech
takuyay0ne
1
160
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
340
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
Agent Skils
dip_tech
PRO
0
140
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
170
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
780
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
170
Agile Leadership Summit Keynote 2026
m_seki
1
680
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
7
2.4k
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Code Review Best Practice
trishagee
74
20k
New Earth Scene 8
popppiees
1
1.5k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
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...