Suche senden
Hochladen
Tapl 5
•
2 gefällt mir
•
1,860 views
rf0444
Folgen
Melden
Teilen
Melden
Teilen
1 von 66
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
深層意味表現学習 (Deep Semantic Representations)
深層意味表現学習 (Deep Semantic Representations)
Danushka Bollegala
たのしい関数型
たのしい関数型
Shinichi Kozake
LR parsing
LR parsing
ichikaz3
Regular Expressions
Regular Expressions
Akhil Kaushik
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト
Junpei Tsuji
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Satoshi imai
私を SKI に連れてって
私を SKI に連れてって
Susisu
Empfohlen
深層意味表現学習 (Deep Semantic Representations)
深層意味表現学習 (Deep Semantic Representations)
Danushka Bollegala
たのしい関数型
たのしい関数型
Shinichi Kozake
LR parsing
LR parsing
ichikaz3
Regular Expressions
Regular Expressions
Akhil Kaushik
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト
Junpei Tsuji
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Satoshi imai
私を SKI に連れてって
私を SKI に連れてって
Susisu
ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Jun Ando
Sanalliset
Sanalliset
teemunmatikka
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
Satoshi Kato
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
Kito Cheng
Lesson 3: Continuity
Lesson 3: Continuity
Matthew Leingang
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
Limits by Rationalization
Limits by Rationalization
Pablo Antuna
Introduction to Polyhedral Compilation
Introduction to Polyhedral Compilation
Akihiro Hayashi
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
LR PARSE.pptx
LR PARSE.pptx
Aishwarya SenthilNathan
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Shunsuke Horii
Shunsuke Horii
Suurist
Ch3 4 regular expression and grammar
Ch3 4 regular expression and grammar
meresie tesfay
Constraint Programming in Haskell
Constraint Programming in Haskell
David Overton
何もないところから数を作る
何もないところから数を作る
Taketo Sano
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
dnoguchi
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
nihon buson
Weitere ähnliche Inhalte
Was ist angesagt?
ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Jun Ando
Sanalliset
Sanalliset
teemunmatikka
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
Satoshi Kato
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
Kito Cheng
Lesson 3: Continuity
Lesson 3: Continuity
Matthew Leingang
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
Limits by Rationalization
Limits by Rationalization
Pablo Antuna
Introduction to Polyhedral Compilation
Introduction to Polyhedral Compilation
Akihiro Hayashi
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
LR PARSE.pptx
LR PARSE.pptx
Aishwarya SenthilNathan
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Shunsuke Horii
Shunsuke Horii
Suurist
Ch3 4 regular expression and grammar
Ch3 4 regular expression and grammar
meresie tesfay
Constraint Programming in Haskell
Constraint Programming in Haskell
David Overton
何もないところから数を作る
何もないところから数を作る
Taketo Sano
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
Was ist angesagt?
(20)
ラムダ計算入門
ラムダ計算入門
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Sanalliset
Sanalliset
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
How to generate PowerPoint slides Non-manually using R
How to generate PowerPoint slides Non-manually using R
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
Lesson 3: Continuity
Lesson 3: Continuity
これから Haskell を書くにあたって
これから Haskell を書くにあたって
関数プログラミング入門
関数プログラミング入門
Limits by Rationalization
Limits by Rationalization
Introduction to Polyhedral Compilation
Introduction to Polyhedral Compilation
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
LR PARSE.pptx
LR PARSE.pptx
たのしい高階関数
たのしい高階関数
Shunsuke Horii
Shunsuke Horii
Ch3 4 regular expression and grammar
Ch3 4 regular expression and grammar
Constraint Programming in Haskell
Constraint Programming in Haskell
何もないところから数を作る
何もないところから数を作る
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Andere mochten auch
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
dnoguchi
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
nihon buson
WooCommerce & Apple TV
WooCommerce & Apple TV
Marko Heijnen
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
第4章 自動比較
第4章 自動比較
toku toku
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~ エピローグ
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~ エピローグ
Dai FUJIHARA
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章
aomori ringo
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
文芸的プログラミング
文芸的プログラミング
Shoko Sasaki
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
gree_tech
LeanCustomerDevelopment
LeanCustomerDevelopment
Kouki Kawagoi
20150418 システムテスト自動化 第二章
20150418 システムテスト自動化 第二章
atsushi ishiji
TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)
none_toka
NaITE#15オープニング資料
NaITE#15オープニング資料
Akira Ikeda
Stg2015 1c-1プレゼン資料 いまココにある請負アジャイル開発現場の実態 ~4年で4億弱売上20案件以上の実践経験から語る~
Stg2015 1c-1プレゼン資料 いまココにある請負アジャイル開発現場の実態 ~4年で4億弱売上20案件以上の実践経験から語る~
健 渡会
a-hisame
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章
mirer
名前付けのすすめ / GMOペパボ株式会社 鹿島恵実(かしめぐ)
名前付けのすすめ / GMOペパボ株式会社 鹿島恵実(かしめぐ)
Kashima Megumi
不確実性への挑戦Ver0.1
不確実性への挑戦Ver0.1
naoto kyo
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと
codecampJP
Andere mochten auch
(20)
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
WooCommerce & Apple TV
WooCommerce & Apple TV
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
第4章 自動比較
第4章 自動比較
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~ エピローグ
アジャイルリーダーシップと組織改革 ~楽天のアジャイル開発というリアル~ エピローグ
すごいHaskell楽しく学ぼう 第6章
すごいHaskell楽しく学ぼう 第6章
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
文芸的プログラミング
文芸的プログラミング
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
LeanCustomerDevelopment
LeanCustomerDevelopment
20150418 システムテスト自動化 第二章
20150418 システムテスト自動化 第二章
TAPL勉強会 第1章 (2012-07-17)
TAPL勉強会 第1章 (2012-07-17)
NaITE#15オープニング資料
NaITE#15オープニング資料
Stg2015 1c-1プレゼン資料 いまココにある請負アジャイル開発現場の実態 ~4年で4億弱売上20案件以上の実践経験から語る~
Stg2015 1c-1プレゼン資料 いまココにある請負アジャイル開発現場の実態 ~4年で4億弱売上20案件以上の実践経験から語る~
システムテスト自動化標準ガイド 読書会 第8章
システムテスト自動化標準ガイド 読書会 第8章
名前付けのすすめ / GMOペパボ株式会社 鹿島恵実(かしめぐ)
名前付けのすすめ / GMOペパボ株式会社 鹿島恵実(かしめぐ)
不確実性への挑戦Ver0.1
不確実性への挑戦Ver0.1
要注意!?効果の出ない技術研修に共通する3つのこと
要注意!?効果の出ない技術研修に共通する3つのこと
Ähnlich wie Tapl 5
代数的データ型をラムダ計算の中で表現する方法
代数的データ型をラムダ計算の中で表現する方法
syamino
Pythonintro
Pythonintro
Mikio Kubo
Church Numerals
Church Numerals
Masato HORINOUCHI
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coq
SUDA Keishi
20180728 halide-study
20180728 halide-study
Fixstars Corporation
言語処理系入門5
言語処理系入門5
Kenta Hattori
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
hirokazutanaka
Introduction to Categorical Programming
Introduction to Categorical Programming
Masahiro Sakai
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
NLPforml5
NLPforml5
Hidekazu Oiwa
5 Info Theory
5 Info Theory
melvincabatuan
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)
wada, kazumi
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
Takeshi Sakaki
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
hirokazutanaka
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___information
takutori
Sml#探検隊
Sml#探検隊
Hiroki Mizuno
Lispでやる記号微分
Lispでやる記号微分
Keiichi Watanabe
Clean
Clean
osamu kimura
Clean
Clean
osamu kimura
Ähnlich wie Tapl 5
(20)
代数的データ型をラムダ計算の中で表現する方法
代数的データ型をラムダ計算の中で表現する方法
Pythonintro
Pythonintro
Church Numerals
Church Numerals
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coq
20180728 halide-study
20180728 halide-study
言語処理系入門5
言語処理系入門5
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
Introduction to Categorical Programming
Introduction to Categorical Programming
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
NLPforml5
NLPforml5
5 Info Theory
5 Info Theory
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___information
Sml#探検隊
Sml#探検隊
Lispでやる記号微分
Lispでやる記号微分
Clean
Clean
Clean
Clean
Mehr von rf0444
SWF
SWF
rf0444
FRP in Practice
FRP in Practice
rf0444
Start FRP
Start FRP
rf0444
PFDS 11.2.2
PFDS 11.2.2
rf0444
PFDS 10.1.2
PFDS 10.1.2
rf0444
PFDS 9.3.2
PFDS 9.3.2
rf0444
PFDS 9.3.1
PFDS 9.3.1
rf0444
PFDS 8.4.1
PFDS 8.4.1
rf0444
PFDS 7.4
PFDS 7.4
rf0444
Haskellday rf
Haskellday rf
rf0444
PFDS 6.4.3
PFDS 6.4.3
rf0444
Mehr von rf0444
(11)
SWF
SWF
FRP in Practice
FRP in Practice
Start FRP
Start FRP
PFDS 11.2.2
PFDS 11.2.2
PFDS 10.1.2
PFDS 10.1.2
PFDS 9.3.2
PFDS 9.3.2
PFDS 9.3.1
PFDS 9.3.1
PFDS 8.4.1
PFDS 8.4.1
PFDS 7.4
PFDS 7.4
Haskellday rf
Haskellday rf
PFDS 6.4.3
PFDS 6.4.3
Tapl 5
1.
The Untyped Lambda-Calculus
Types and Programming Languages 5 章 λ! @rf0444
2.
5.1 Basics
3.
λ? ラムダ計算 (lambda-calculus) 関数定義
と 関数適用 だけ 全て関数
4.
Syntax 項 (term) t
::= x λx.t t t * x: 任意の変数、t: 任意の項
5.
Syntax 項 (term) t
::= 変数 x (variable) λx.t t t * x: 任意の変数、t: 任意の項
6.
Syntax 項 (term) t
::= x ラムダ抽象 λx.t (abstraction) t t * x: 任意の変数、t: 任意の項
7.
Syntax 項 (term) t
::= x λx.t 関数適用 (application) t t * x: 任意の変数、t: 任意の項
8.
Syntax 優先順位 ラムダ抽象 -
右から 例: λx.λy.t = λx.(λy.t) 関数適用 - 左から 例: λx.a b c = λx.(a b) c
9.
Scope 束縛変数 (bound variable)
λx.t で t の中にある x のこと 例: λx.x y での、x
10.
Scope 自由変数 (free variable)
項の中で、外側のラムダ抽象の変数部に現れな い変数のこと 例: λx.x y での、y
11.
Scope 閉項 (closed term)
自由変数を含まない項のこと コンビネータ (combinator) ともいう 例: λx.x 恒等関数 (identity function)
12.
Operational
Semantics 関数適用 (λx.a) b ! [x!b]a a の中の x を b に置き換える 例: (λx.x) y ! y
13.
Operational
Semantics 簡約基 (redex) (λx.a) b という形をした項のこと β簡約 (beta-reduction) 簡約基を、先のルールに従って書き換えること
14.
Operational
Semantics 簡約戦略 full beta-reduction normal order strategy call-by-name strategy call-by-value strategy
15.
Operational
Semantics full beta-reduction 任意の簡約可能式を、任意のタイミングで簡 約できる
16.
Operational
Semantics normal order strategy 最左最外簡約 (leftmost, outermost) 左側、外側の項から順番に簡約していく
17.
Operational
Semantics call-by-name strategy ラムダ抽象の中は簡約しない それ以外は normal order strategy call-by-need strategy 評価結果を保存して、再計算しない版
18.
Operational
Semantics call-by-value strategy 関数適用の前に、右側を先に簡約する それ以外は call-by-name strategy
19.
Operational
Semantics call-by-value strategy 正格 (strict) 関数内で引数が使われなくでも、引数を評 価する call-by-name/need は 遅延 (lazy)
20.
5.2 Programming in the
Lambda-Calculus
21.
Multiple Arguments 2引数関数 λ(a,b).t
的な λa.λb.t でできるよ!
22.
Multiple Arguments 高階関数 (higher-order
function) 関数を引数に受け取ったり、関数を返したり する関数のこと 例: λa.λb.t a をとって「b をとって t を返す関数」 を返す関数
23.
Multiple Arguments カリー化 (currying)
多引数の関数を、高階関数の形に変換するこ と 例: λ(a,b).t ! λa.λb.t
24.
Church Booleans tru =
λt.λf.t fls = λt.λf.f
25.
Church Booleans tru =
λt.λf.t t: 真を表すもの f: 偽を表すもの fls = λt.λf.f
26.
Church Booleans and =
λb.λc.b c fls or = λb.λc.b tru c not = λb.b fls tru
27.
Church Booleans and =
λb.λc.b c fls b が真なら c 偽なら fls or = λb.λc.b tru c not = λb.b fls tru
28.
Church Booleans and =
λb.λc.b c fls b が真なら tru or = λb.λc.b tru c 偽なら c not = λb.b fls tru
29.
Church Booleans and =
λb.λc.b c fls or = λb.λc.b tru c not = λb.b fls tru b が真なら fls 偽なら tru
30.
Church Booleans 例: and
tru fls ! (λb.λc.b c fls) tru fls ! (λc.tru c fls) fls ! tru fls fls
31.
Church Booleans 例: and
tru fls ! tru fls fls ! (λt.λf.t) fls fls ! (λf.fls) fls ! fls
32.
Pairs pair = λf.λs.λb.b
f s fst = λp.p tru snd = λp.p fls
33.
Pairs pair = λf.λs.λb.b
f s fst = λp.p tru f が返る snd = λp.p fls s が返る
34.
Pairs 例: fst (pair
tru fls) ! fst ((λf.λs.λb.b f s) tru fls) ! fst ((λs.λb.b tru s) fls) ! fst (λb.b tru fls) ! (λp.p tru) (λb.b tru fls)
35.
Pairs 例: fst (pair
tru fls) ! (λp.p tru) (λb.b tru fls) ! (λb.b tru fls) tru ! tru tru fls ! (λt.λf.t) tru fls ! tru
36.
Church Numerals c0 =
λs.λz.z c1 = λs.λz.s z c2 = λs.λz.s (s z) c3 = λs.λz.s (s (s z)) ...
37.
Church Numerals
z: 0 を表すもの c0 = λs.λz.z c1 = λs.λz.s z s: 次を取得するもの c2 = λs.λz.s (s z) c3 = λs.λz.s (s (s z)) ...
38.
Church Numerals scc =
λn.λs.λz.s (n s z)
39.
Church Numerals
n の scc = λn.λs.λz.s (n s z) 次
40.
Church Numerals plus =
λm.λn.λs.λz.m s (n s z)
41.
Church Numerals
n から始めて plus = λm.λn.λs.λz.m s (n s z) m 個 次
42.
Church Numerals plus =
λm.λn.λs.λz.m s (n s z) plus = λm.λn.m scc n
43.
Church Numerals plus =
λm.λn.λs.λz.m s (n s z) plus = λm.λn.m scc n m 回 n から始めて scc
44.
Church Numerals times =
λm.λn.m (plus n) c0
45.
Church Numerals
0 から始めて times = λm.λn.m (plus n) c0 m 回 n を足す
46.
Church Numerals iszro =
λm.m (λx.fls) tru
47.
Church Numerals
tru から始めて iszro = λm.m (λx.fls) tru 次は常に fls
48.
Church Numerals prd =
λm.fst (m ss zz) ss = λp.pair (snd p) (scc (snd p)) zz = pair c0 c0
49.
Church Numerals prd =
λm.fst (m ss zz) ss = λp.pair (snd p) (scc (snd p)) zz = pair c0 c0 (0, 0) から始めて
50.
Church Numerals prd =
λm.fst (m ss zz) ss = λp.pair (snd p) (scc (snd p)) zz = pair c0 c0 (_, x) ! (x, x + 1) (0, 0) から始めて
51.
Church Numerals
m 回やると、 m = 0 の時は (m - 1, m) (0, 0) prd = λm.fst (m ss zz) ss = λp.pair (snd p) (scc (snd p)) zz = pair c0 c0 (_, x) ! (x, x + 1) (0, 0) から始めて
52.
Enriching the
Calculus λNB NB (3章) に λ を加える NB (Real) と λ (Church) は、 両方とも boolean と numeral を 持っている
53.
Enriching the
Calculus Church ! Real realbool = λb.b true false realnat = λm.m (λx.succ x) 0 Real ! Church churchbool = λb.if b then tru else fls
54.
Enriching the
Calculus 振る舞い同値 (behaviorally equivalent) どんな引数に対しても、2つの評価結果が同じ 例: call-by-value での scc c1 (λs.λz.s ((λs’.λz’.s’ z’) s z)) (λs.λz.s (s z)) と “振る舞い同値”
55.
Recursion 正規形 (normal form)
これ以上評価できない項のこと 発散 (diverge) 正規形にならない項のこと 例: (λx.x x) (λx.x x) - omega
56.
Recursion 不動点 (fixed-point) fix
= λf. (λx.f (λy.x x y)) (λx.f (λy.x x y)) Z-combinator / call-by-value Y-combinator Y-combinator: λf.(λx.f (x x)) (λx.f (x x))
57.
Recursion 不動点 (fixed-point) 例:
factorial = fix (λf.λn. (iszro n) c1 (times n (f (prd n))))
58.
Recursion Real ! Church
churchnat = fix (λf.λn. if iszero n then c0 else scc (f (pred n))
59.
5.3 Formalities
60.
Syntax 項集合 V を変数の可算集合とする
項集合は、次を満たす最小の集合 T
61.
Syntax 項集合 T x
∈ V ! x ∈ T t ∈ T かつ x ∈ V ! λx.t ∈ T s ∈ T かつ t ∈ T ! s t ∈ T
62.
Syntax 自由変数集合 項 t
の自由変数集合 FV(t) FV(x) = {x} FV(λx.t) = FV(t) - {x} FV(s t) = FV(s) ∪ FV(t)
63.
Substitution α変換 (alpha-conversion) 束縛変数の名前を変えること
例: λy.x y ! λw.x w
64.
Substitution 置き換え [x!s]x =
s [x!s]y = y [x!s](λy.t) = λy.[x!s]t [x!s](t u) = ([x!s]t) ([x!s]u)
65.
Operational
Semantics Syntax 項 (term) 値 (value) t ::= v ::= x λx.t λx.t t t
66.
Operational
Semantics 評価 (evaluation) (call-by-value) t1 ! t1’ E-APP1 t1 t2 ! t1’ t2 t ! t’ E-APP2 v t ! v t’ (λx.t) v ! [x!v]t E-APPABS
Jetzt herunterladen