Submit Search
1+1=2の話(coinsのOCのLTで話したやつ)
Download as PPTX, PDF
0 likes
283 views
明
明洋 庄司
筑波大学情報学群情報科学類のオープンキャンパスのLTで話した内容.
Engineering
Read more
1 of 19
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
More Related Content
PPTX
1+1=2の話
明洋 庄司
KEY
ラムダ計算入門
Eita Sugimoto
PPTX
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
PDF
プログラミングHaskell(第2章)
yaju88
PDF
たのしい関数型
Shinichi Kozake
PDF
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
PDF
Material
_TUNE_
1+1=2の話
明洋 庄司
ラムダ計算入門
Eita Sugimoto
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
プログラミングHaskell(第2章)
yaju88
たのしい関数型
Shinichi Kozake
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
Material
_TUNE_
What's hot
(16)
PDF
[Basic 10] 形式言語 / 字句解析
Yuto Takei
ODP
Haskell
todorokit
ODP
Javascriptで学ぶ Functional Programming
todorokit
PDF
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
tsudaa
PDF
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
PDF
Lispでやる記号微分
Keiichi Watanabe
PPTX
情報科学シケスラ Fibonacci
tozan gezan
PDF
TypeScript & 関数型講座 第3回 関数型入門
gypsygypsy
PDF
関数型プログラミング in javascript
Ryuma Tsukano
ODP
(define)なしで再帰関数を定義する
blackenedgold
PDF
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
PDF
Japalisp -Lisp like language for Numeric computation with natural Japanese la...
Yuta Okazaki
PDF
Usp友の会勉強会、ジャクソン構造図の巻(後編)
umidori
PPTX
今日からはじめる微分方程式
Ryo Kaji
PDF
私を SKI に連れてって
Susisu
PDF
とぽろじー入門(画像なし版)
Katsuya Ito
[Basic 10] 形式言語 / 字句解析
Yuto Takei
Haskell
todorokit
Javascriptで学ぶ Functional Programming
todorokit
HiroshimaJUG の「Java8 Lambda ハンズオン with すごい広島」を5分で振り返る
tsudaa
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
Lispでやる記号微分
Keiichi Watanabe
情報科学シケスラ Fibonacci
tozan gezan
TypeScript & 関数型講座 第3回 関数型入門
gypsygypsy
関数型プログラミング in javascript
Ryuma Tsukano
(define)なしで再帰関数を定義する
blackenedgold
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
Japalisp -Lisp like language for Numeric computation with natural Japanese la...
Yuta Okazaki
Usp友の会勉強会、ジャクソン構造図の巻(後編)
umidori
今日からはじめる微分方程式
Ryo Kaji
私を SKI に連れてって
Susisu
とぽろじー入門(画像なし版)
Katsuya Ito
Ad
Similar to 1+1=2の話(coinsのOCのLTで話したやつ)
(11)
PDF
型無しラムダ計算の基礎(JOI2018夏季セミナー)
Kazuki Ogitsuka
PDF
F#の基礎(嘘)
bleis tift
PDF
Cartesian Closed Category
Sosuke MORIGUCHI
PDF
計算の概念
Nobutaka SAITO
PDF
圏論とプログラミング読書会#2 資料
53ningen
PPTX
Introduction to lambda calculation
relipmoc101
PPTX
「型の理論」と証明支援システム -- COQの世界
maruyama097
PDF
Lambda calculus
Naoki Rin
PDF
ラムダ計算と関数型言語を学ぶ
Naoki Hayashida
PDF
シャミノ計算
syamino
PDF
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
bleis tift
型無しラムダ計算の基礎(JOI2018夏季セミナー)
Kazuki Ogitsuka
F#の基礎(嘘)
bleis tift
Cartesian Closed Category
Sosuke MORIGUCHI
計算の概念
Nobutaka SAITO
圏論とプログラミング読書会#2 資料
53ningen
Introduction to lambda calculation
relipmoc101
「型の理論」と証明支援システム -- COQの世界
maruyama097
Lambda calculus
Naoki Rin
ラムダ計算と関数型言語を学ぶ
Naoki Hayashida
シャミノ計算
syamino
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
bleis tift
Ad
1+1=2の話(coinsのOCのLTで話したやつ)
1.
1+1=2 Akihiro Shoji a.k.a.
alphaKAI(@alpha_kai_NET)
2.
突然ですが 1+1 出来ますか?
3.
• え、2では? • はい、2ですね。 •
終了… ではなく
4.
気を取り直して • ここでは、1+1=2を少し変わった視点から見てみ ましょう • →
ラムダ計算で考えてみよう
5.
ラムダ計算とは • 簡単に言うとラムダ→λを使って関数をλx. xみた いに表すこと(ラムダを用いて表した式をラムダ 式といいます) •
すべての計算(手続き)を関数とそれに対する適応 であらわそーみたいな感じ • すごい簡単な体系でありながら,チューリング 完全
6.
もう少し詳しく言うと • ラムダ抽象と関数適用からなる計算体系 • チューリング完全であるから,C言語のようなプ ログラミング言語と同等の計算能力を持つ(チュ ーリング完全とはどういうことかについては時 間があれば話します)
7.
ラムダ計算の基本-書き方 • よく見慣れた関数: f(x)
= 2x + 1 • ラムダ式で書くと: f = λx. 2x + 1 • プログラミング言語的に言うと、式を関数として第一級 関数(関数をオブジェクトとしてあつかう)のような感じ。 • 複数の引き数がある場合は慣例的にまとめることができる 例:λx. (λy. x + y)
8.
ラムダ計算の基本-用語 • 束縛変数と自由変数 • 束縛変数:
λx. x ← この場合のx • 自由変数: λx. x + y ←この場合のy • 注意: λxy. x + y (=λx. λy. x + y)この場合、x,yと もに束縛変数
9.
ラムダ計算の用語-その2 • 適用(後に説明するがβ簡約という) • 簡単に言うと、引き数の変数に値を代入する こと •
f(x)=2x+1とするとx=2としてf(2)=2×2+1=5
10.
複数の引き数がある場合 • λxy. x
+ yの場合、yを引き数に持つ`関数`が帰る( ポイント)
11.
α変換 • (λf. λx.
f x)に(λf. λx.f x)を適用する場合、一つ問題が発生 する • 名前が他の場所と衝突しないかぎり、ラムダ式の変数 名は自由に変えて良い(これがα変換) • λx.x ≡ λy.y
12.
自然数について • (0を含む)自然数は, 0とある数のその次の数を返す関数( 後者関数)Succを用いることで次のように定義できる •
ちなみに,数を表す場合,数字を用いなくても一意に識 別可能であれば数とそのシンボルの対応を数字のように 扱うことができる(つまり,数を表すのに必ずしも数字を 使う必要はない)
13.
チャーチ数 • ラムダ計算はすべてを関数として表したいので、数 も関数で表す必要があるので、以下のように定義す る • 0
= λfx. x • 1 = λfx. f x • 2 = λfx. f (f x) • 3 = λfx. f (f (f x)) 以下同様にfがふえてく...
14.
Succもラムダ計算で! • Succをラムダ計算の体系で表すことができれば,自然数全体 を扱うことができそう! →なので,Succを定義します. •
これだけ見てもなんでこれでSuccが定義できるの…?ってなる と思うので… • f(n f x)のnにfとxを適用することで,nの最奥のxをf xという構 造に置換することが出来,それによって1増えてる
15.
お待たせしました • 1 +
1を考えましょう。 • 足し算を行う関数addは次のように定義できます . • add := λa.λb.λf.λx. b f (a f x) • これを使うと....
16.
1+1はこうなる
17.
どうなってんの • (λa. λb.
λf. λx. a f (b f x)) A B • Bの適用によりb(=B)となり,Bの中のf, xをbの横のf, xで置換して得 られたものを,B’とするとa f B’となる. • 同じようにしてaの中のfをその横のfと置換した後に,aの最奥にあ るxをB’で置換することになり,置換して得られたA’は • λf. λx. f(f(f…f B’))と言うような形になる.ここでB’よりも前にfはaこ あり,B’はBなので,つまり,その中にはfがbこある.よって,全 体としてはfがA+B個あることになるので,A+Bが計算できる. • (B’はBと同じ数.Bのf,xとaddのf,xを交換しただけ)
18.
他にも… • 掛け算やa^b(aのb乗)といった指数計算,更には 引き算,そして,ある数の一つ前を求める前者 関数predも定義できる. • 興味ある人は是非調べてみてください… •
(なお,うまいことやるとif式を表すことが出来た り,carとcdr, consも定義できるのでリストを扱 えたりする.)
19.
ご静聴ありがとうござ いました
Download