Suche senden
Hochladen
ラムダ計算入門
•
Als KEY, PDF herunterladen
•
73 gefällt mir
•
33,814 views
Eita Sugimoto
Folgen
NPCAでLTしたスライド そのうちブログにちゃんとした解説とかを書くかも
Weniger lesen
Mehr lesen
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 39
Jetzt herunterladen
Empfohlen
たのしい高階関数
たのしい高階関数
Shinichi Kozake
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
双対性
双対性
Yoichi Iwata
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
直交領域探索
直交領域探索
okuraofvegetable
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Empfohlen
たのしい高階関数
たのしい高階関数
Shinichi Kozake
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
双対性
双対性
Yoichi Iwata
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
直交領域探索
直交領域探索
okuraofvegetable
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
線形計画法入門
線形計画法入門
Shunji Umetani
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
Marp Tutorial
Marp Tutorial
Rui Watanabe
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
π計算
π計算
Yuuki Takano
Rの高速化
Rの高速化
弘毅 露崎
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
(Lambdaだけで)純LISPのようなナニかを作る
(Lambdaだけで)純LISPのようなナニかを作る
Daichi Teruya
Lisp講義1
Lisp講義1
stibear (stibear1996)
Weitere ähnliche Inhalte
Was ist angesagt?
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
線形計画法入門
線形計画法入門
Shunji Umetani
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
Marp Tutorial
Marp Tutorial
Rui Watanabe
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
π計算
π計算
Yuuki Takano
Rの高速化
Rの高速化
弘毅 露崎
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
定理証明支援系Coqについて
定理証明支援系Coqについて
Yoshihiro Mizoguchi
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Was ist angesagt?
(20)
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
中3女子でもわかる constexpr
中3女子でもわかる constexpr
線形計画法入門
線形計画法入門
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Marp Tutorial
Marp Tutorial
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
π計算
π計算
Rの高速化
Rの高速化
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
ウェーブレット木の世界
ウェーブレット木の世界
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
定理証明支援系Coqについて
定理証明支援系Coqについて
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
明日使えないすごいビット演算
明日使えないすごいビット演算
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
自動定理証明の紹介
自動定理証明の紹介
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Ähnlich wie ラムダ計算入門
(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-コレクションとファイル
理 小林
Ähnlich wie ラムダ計算入門
(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-コレクションとファイル
Mehr von 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
Mehr von 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?
Hinweis der Redaktion
\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
Jetzt herunterladen