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
1.8k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
5.7k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
140
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
520
26新卒_総合職採用_会社説明資料
livesense
PRO
0
12k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
49k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
280
Other Decks in Technology
See All in Technology
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
310
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
370
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
220
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
国井さんにPurview の話を聞く会
sophiakunii
1
350
I tried making a solo advent calendar!
zzzzico
0
140
Master Dataグループ紹介資料
sansan33
PRO
1
4.2k
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
610
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
Everything As Code
yosuke_ai
0
500
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
220
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
100
Deep Space Network (abreviated)
tonyrice
0
33
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Embracing the Ebb and Flow
colly
88
4.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
130
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
67
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
49
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
Bash Introduction
62gerente
615
210k
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...