Enviar pesquisa
Carregar
ラムダ計算入門
•
Transferir como KEY, PDF
•
73 gostaram
•
33,813 visualizações
Eita Sugimoto
Seguir
NPCAでLTしたスライド そのうちブログにちゃんとした解説とかを書くかも
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 39
Baixar agora
Recomendados
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
たのしい関数型
たのしい関数型
Shinichi Kozake
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
Marp Tutorial
Marp Tutorial
Rui Watanabe
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
Recomendados
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
Nobuhisa Koizumi
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
たのしい関数型
たのしい関数型
Shinichi Kozake
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
Marp Tutorial
Marp Tutorial
Rui Watanabe
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Shirou Maruyama
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
直交領域探索
直交領域探索
okuraofvegetable
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
π計算
π計算
Yuuki Takano
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
型安全性入門
型安全性入門
Akinori Abe
LDA入門
LDA入門
正志 坪坂
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
Lisp講義1
Lisp講義1
stibear (stibear1996)
Mais conteúdo relacionado
Mais procurados
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Shirou Maruyama
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
直交領域探索
直交領域探索
okuraofvegetable
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
π計算
π計算
Yuuki Takano
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
型安全性入門
型安全性入門
Akinori Abe
LDA入門
LDA入門
正志 坪坂
Mais procurados
(20)
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
関数プログラミング入門
関数プログラミング入門
メタプログラミングって何だろう
メタプログラミングって何だろう
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
直交領域探索
直交領域探索
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
π計算
π計算
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
型安全性入門
型安全性入門
LDA入門
LDA入門
Semelhante a ラムダ計算入門
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
Lisp講義1
Lisp講義1
stibear (stibear1996)
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる
5t111111
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
Ruby 3の型推論やってます
Ruby 3の型推論やってます
mametter
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料
Hiromasa Ohashi
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
1+1=2の話
1+1=2の話
明洋 庄司
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
Pythonintro
Pythonintro
Mikio Kubo
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
Haskell勉強会 in ie
Haskell勉強会 in ie
maeken2010
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
秘密分散法の数理
秘密分散法の数理
Akito Tabira
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル
理 小林
Semelhante a ラムダ計算入門
(18)
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
Lisp講義1
Lisp講義1
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Ruby 3の型推論やってます
Ruby 3の型推論やってます
すごいHaskell読書会 第六章 発表資料
すごいHaskell読書会 第六章 発表資料
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
1+1=2の話
1+1=2の話
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
Pythonintro
Pythonintro
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Haskell勉強会 in ie
Haskell勉強会 in ie
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
秘密分散法の数理
秘密分散法の数理
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル
Mais de Eita Sugimoto
型推論
型推論
Eita Sugimoto
電源2
電源2
Eita Sugimoto
Semiotics
Semiotics
Eita Sugimoto
電源
電源
Eita Sugimoto
Lecture4
Lecture4
Eita Sugimoto
Lecture3
Lecture3
Eita Sugimoto
Lecture2
Lecture2
Eita Sugimoto
Lecture1
Lecture1
Eita Sugimoto
Summer seminar
Summer seminar
Eita Sugimoto
Functional Pearl + Brainfuck
Functional Pearl + Brainfuck
Eita Sugimoto
Mais de Eita Sugimoto
(10)
型推論
型推論
電源2
電源2
Semiotics
Semiotics
電源
電源
Lecture4
Lecture4
Lecture3
Lecture3
Lecture2
Lecture2
Lecture1
Lecture1
Summer seminar
Summer seminar
Functional Pearl + Brainfuck
Functional Pearl + Brainfuck
ラムダ計算入門
1.
ラムダ計算入門 yingtai
2.
自己紹介 • 67回生 • twitter:
@_yingtai • 部誌でラムダ計算のこと書いた • Haskellerワナビ
3.
LTの動機 • ラムダ計算が人口に膾炙していない •
部誌書いたのに... • ※部誌の内容は信用しちゃだめです
4.
流れ • ラムダ計算入門 • データ型の表現
5.
ラムダ計算入門
6.
ラムダ計算とは • 「関数」をより抽象的に扱う
7.
関数 • 「箱」(ブラックボックス) • 入力(引数)があって、出力(結果)がある
f(x)
8.
ラムダ記法
9.
要するに • λ[入力].[出力] • なぜ「抽象的」と言えるのか?
• = どこがええのんや
10.
抽象化① • 無名関数 •
いちいち名前を付けない λx. x+2
11.
抽象化② • 高階関数 •
関数そのものを入力 / 出力できる
12.
例えば、 • f(x, y)
= x を考える (図はイメージ) • ラムダ記法では? f
13.
答え λx. (λy.x)
14.
λx. (λy.x)
•Pythonコード •f1 と f2 は同じ
15.
カリー化 • f(x, y)
= x → f(x)(y) = x • これをカリー化と言います
16.
ラムダ記法では • カリー化した関数を簡潔に表せる •
λx.(λy.x) で事足りる
17.
でっていう • カリー化して何が嬉しいのか • めんどいだけなのでは...
18.
嬉しいです •
f(x, y) = x • … x と y の両方を渡す必要がある • f(x)(y) = x • … x だけ渡す、という操作が可能 • この操作を部分適用と言う
19.
ついでに • λx. (λy.
x) は λx. λy. x と表せる • どこがどの関数か自明 • λx. λy. x は λxy. x と表せる • ただの省略記法
20.
SKIコンビネータ • S =
λx y z. x z (y z) • K = λx y. x • I = λx. x
21.
I コンビネータ • λx.
x • Identity combinator (恒等関数) • 取ったのをそのまま返すだけ
22.
Kコンビネータ • λx y.
x • Constant combinator • Konstant (独) • 定数関数
23.
Sコンビネータ • λx y
z. x z (y z) • Sharing combinator • z をシェアする • S (λa. M) (λb. N) = λz. M N • ただし M = M[a:=z], N = N[b:=z]
24.
データ型の表現
25.
基本的な考え方 • Turing: 関数をデータで表現する
• → 手続き型 • Church: データを関数で表現する • → 関数型
26.
Church encoding • データ型をラムダ計算でエンコード
• 自然数、真偽値、コンテナ、...etc.
27.
自然数 (Church) • いわゆるチャーチ数 •
ペアノの公理系に基づいて構成 • 1 := suc(0), 2 := suc(suc(0)), ...
28.
具体的には • 0 :=
λs z. z • 1 := λs z. s z • 2 := λs z. s (s z) • 3 := λs z. s (s (s z)) • ...
29.
Boolean • True :=
λt f. t • False := λt f. f • if t1 then t2 else t3 := t1 t2 t3
30.
Tuple • (t1, t2)
:= λx. x t1 t2 • fst := λt. t (λf s. f) • snd := λt. t (λf s. s)
31.
List (Church) • cons
と nil で表現 • [x,y,z] • = (cons x (cons y (cons z nil)))
32.
List (Church) • Nil
:= λc n. n • Cons := λh t c n. c h (t c n)
33.
List (Church) • [x,y,z] •
=λc n. c x(λc n. c y(λc n. c z n)) • cons が foldr 的に振る舞う! • foldr = λn c l. l c n • tail = λl. l (λx xs. xs) Nil
34.
Scott encoding • もう一つのエンコーディング •
Lazy Kのリストは Scott encoding
35.
自然数 (Scott) • 0
:= λz s. z • 1 := λz s. s 0 • 2 := λz s. s 1 • 3 := λz s. s 2 • ...
36.
List (Scott) • Nil
= λf g. f • Cons = λx xs f g. g x xs
37.
List (Scott) • [x,y,z] •
= λc. c x (λc. c y (λc. (c z) Nil)) • consはパターンマッチ的!
38.
まとめ • Scott encoding
• プログラミングが簡単 • パターンマッチ • Church encoding • 再帰が簡単、計算量
39.
Any questions?
Notas do Editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Baixar agora