Soumettre la recherche
Mettre en ligne
圏論とHaskellは仲良し
•
Télécharger en tant que PPTX, PDF
•
11 j'aime
•
7,610 vues
O
ohmori
Suivre
このスライドは第6回プログラマのための数学勉強会で使用しました。
Lire moins
Lire la suite
Formation
Signaler
Partager
Signaler
Partager
1 sur 11
Télécharger maintenant
Recommandé
圏論は、随伴が全て
圏論は、随伴が全て
ohmori
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
圏とHaskellの型
圏とHaskellの型
KinebuchiTomo
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
ホモトピー型理論入門
ホモトピー型理論入門
k h
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
Recommandé
圏論は、随伴が全て
圏論は、随伴が全て
ohmori
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
Hiromi Ishii
圏とHaskellの型
圏とHaskellの型
KinebuchiTomo
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
ホモトピー型理論入門
ホモトピー型理論入門
k h
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
Kenichi Hironaka
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
Hiromi Ishii
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
Takuya Akiba
JavaScript難読化読経
JavaScript難読化読経
Yosuke HASEGAWA
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
STAIR Lab, Chiba Institute of Technology
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
最適化超入門
最適化超入門
Takami Sato
Rust で RTOS を考える
Rust で RTOS を考える
ryuz88
ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
実践Scalaでペアノの公理
実践Scalaでペアノの公理
Yasuki Okumura
加法よりも低レベルな演算を考える
加法よりも低レベルな演算を考える
Yu(u)ki IWABUCHI
Contenu connexe
Tendances
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
Kenichi Hironaka
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
Hiromi Ishii
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
Yoshihiro Mizoguchi
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
Takuya Akiba
JavaScript難読化読経
JavaScript難読化読経
Yosuke HASEGAWA
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
STAIR Lab, Chiba Institute of Technology
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
最適化超入門
最適化超入門
Takami Sato
Rust で RTOS を考える
Rust で RTOS を考える
ryuz88
ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
Tendances
(20)
メタプログラミングって何だろう
メタプログラミングって何だろう
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
渡辺澄夫著「ベイズ統計の理論と方法」5.1 マルコフ連鎖モンテカルロ法
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
Pythonによる黒魔術入門
Pythonによる黒魔術入門
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
JavaScript難読化読経
JavaScript難読化読経
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
知識グラフの埋め込みとその応用 (第10回ステアラボ人工知能セミナー)
充足可能性問題のいろいろ
充足可能性問題のいろいろ
C++ マルチスレッド 入門
C++ マルチスレッド 入門
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
最適化超入門
最適化超入門
Rust で RTOS を考える
Rust で RTOS を考える
ラムダ計算入門
ラムダ計算入門
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
En vedette
実践Scalaでペアノの公理
実践Scalaでペアノの公理
Yasuki Okumura
加法よりも低レベルな演算を考える
加法よりも低レベルな演算を考える
Yu(u)ki IWABUCHI
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
和人 桐ケ谷
nichiyou vol.4
nichiyou vol.4
tsu nuts
最大公約数に関するささやかな知見
最大公約数に関するささやかな知見
ayatsuka
かんたんベジェ曲線
かんたんベジェ曲線
Yu(u)ki IWABUCHI
SwiftでRiemann球面を扱う
SwiftでRiemann球面を扱う
hayato iida
Riemann球面に内接する直方体[第四回日曜数学会]
Riemann球面に内接する直方体[第四回日曜数学会]
Yuto Horikawa
営業会社の開発組織を成長させるためにやったこと
営業会社の開発組織を成長させるためにやったこと
Daisuke Kotaki
ベルヌーイ数を割る素数 - 第4回 #日曜数学会
ベルヌーイ数を割る素数 - 第4回 #日曜数学会
Junpei Tsuji
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
Ken'ichi Matsui
第4回日曜数学会スライド by まこぴ~
第4回日曜数学会スライド by まこぴ~
Makoto Kohno
Packing
Packing
Tatsuki SHIMIZU
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
Poincare embeddings for Learning Hierarchical Representations
Poincare embeddings for Learning Hierarchical Representations
Tatsuya Shirakawa
En vedette
(15)
実践Scalaでペアノの公理
実践Scalaでペアノの公理
加法よりも低レベルな演算を考える
加法よりも低レベルな演算を考える
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
nichiyou vol.4
nichiyou vol.4
最大公約数に関するささやかな知見
最大公約数に関するささやかな知見
かんたんベジェ曲線
かんたんベジェ曲線
SwiftでRiemann球面を扱う
SwiftでRiemann球面を扱う
Riemann球面に内接する直方体[第四回日曜数学会]
Riemann球面に内接する直方体[第四回日曜数学会]
営業会社の開発組織を成長させるためにやったこと
営業会社の開発組織を成長させるためにやったこと
ベルヌーイ数を割る素数 - 第4回 #日曜数学会
ベルヌーイ数を割る素数 - 第4回 #日曜数学会
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
第4回日曜数学会スライド by まこぴ~
第4回日曜数学会スライド by まこぴ~
Packing
Packing
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
Poincare embeddings for Learning Hierarchical Representations
Poincare embeddings for Learning Hierarchical Representations
Dernier
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
shu1108hina1020
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
oganekyokoi
International Politics I - Lecture 1
International Politics I - Lecture 1
Toru Oga
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
RodolfFernandez1
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
oganekyokoi
What I did before opening my business..pdf
What I did before opening my business..pdf
oganekyokoi
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
yutakashikano1984
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
oganekyokoi
Dernier
(8)
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
International Politics I - Lecture 1
International Politics I - Lecture 1
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
What I did before opening my business..pdf
What I did before opening my business..pdf
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
圏論とHaskellは仲良し
1.
圏論とHaskellは 仲良し 法政大学 大森健児
2.
自己紹介 1969年5月卒業 1972年9月卒業 1969-85 企業の研究所で マルチプロセッサシステム 2016.2.29最終講義 1985-2016大学で教育と研究
3.
圏論 数学は、元来、抽象的だが、 その中で最も抽象的なのが圏論 それぞれの分野を圏とし、 それらに共通するものを扱う カテゴリーには、 ・集合の圏 ・モノイドの圏 ・群の圏 ・ベクトル空間の圏 ・グラフの圏 ・実数の集合と 連続関数の圏 ・位相空間の圏 ・デカルト閉圏 圏とは 1.対象(集合:要素の集まり) 2.射(関数) 3.ソース、ターゲット 4.恒等射 5.合成(結合律) 例:自然数の加算 (モノイド) 𝑛 恒等射:0 合成: + 0 1 ・ 例:自然数の加算 +𝑛 恒等射:0 合成: +𝑚 °
+𝑛 = +(𝑚 + 𝑛) +0 +1 ・ ℕ カリー化 𝑓 𝑔 ℎ 𝐴 𝐵 𝐶 例:集合と写像の圏 𝑥 𝑦 𝑧 𝑤 𝑢 𝑣 𝑎 𝑏 𝑐 𝑑 𝑒 𝑥 𝑦 𝑧𝑢 𝑣 𝑤 𝑑 𝑒𝑎 𝑏 𝑐 𝑋 𝑃 𝑠 𝑡 例:グラフの圏 ノードとエッジを対象に
4.
圏論 𝑛 例:自然数とその列 [𝑛] 𝐹 = [
] 米田の補題 Nat(Hom 𝑆𝑒𝑡𝑠(𝑋, _), 𝐹) ≅ 𝐹(𝑋) X Hom 𝑆𝑒𝑡𝑠(𝑋, _) 圏𝐶 𝐹(𝑋) 圏𝑆𝑒𝑡𝑠 𝐹 随伴関手Hom 𝐴(𝐿(𝐵), 𝐴) ≅ Hom 𝐵(𝐵, 𝑅(𝐴)) 圏𝐵 圏𝐴 𝐿 𝑅 赤ん坊 の世界 雑音 中学生 の世界 会話中学生:職場体験 𝑎 𝑏 𝑏 ∘ 𝑎 = 𝑏 + 𝑎 (+𝑎) (+𝑏) +𝑏 ∘ +𝑎 = + 𝑏 + 𝑎 𝐹 𝒞1 ࣝ2 ℕ ℕ ℕ 例:カリー化からモ ノイドへの写像 関手: 圏𝒞から圏𝒟への関手𝐹: 𝒞 → 𝒟とは、圏𝒞の対象𝐴を圏𝒟の対象𝐹(𝐴)に対応付け、圏𝒞の 射 𝑓: 𝐴 → 𝐵を圏𝒟の対象𝐹(𝑓)に対応付ける関数の組で、次の二つの条件を満たすものである。 1) 𝒞の任意の二つの射𝑓: 𝐴 → 𝐵, 𝑔: 𝐵 → 𝐶に対して、𝐹(𝑔 ⋅ 𝑓) = 𝐹(𝑔) ∘ 𝐹(𝑓)である。 2) 𝒞の任意の対象𝐴に対して、𝐹(1 𝐴) = 1 𝐹( 𝐴) である。 𝐴 𝐵 𝑓 𝒞 𝐹(𝐴) 𝐹(𝐵) 𝐹(𝑓) 𝒟 𝐹 新しい圏に
5.
Universal Properties 積の定義: 対象𝐵1, 𝐵2の積とは、対象𝑃、射𝑝1:
𝑃 → 𝐵1, 𝑝2: 𝑃 → 𝐵2から なり、次の条件を満足するものである。 任意の対象𝑋と任意の射𝑓1: 𝑋 → 𝐵1, 𝑓2: 𝑋 → 𝐵2が与えられ た時、以下の図式が可換となるような𝑢: 𝑋 → 𝑃が唯一つ 存在する。 このとき、𝑃は 𝐵1 × 𝐵2と表す。 最大公約数 積集合
6.
Universal Properties 和の定義: 対象𝐵1, 𝐵2の和とは、対象𝑄、射𝑞1:
𝑄 → 𝐵1, 𝑞2: 𝑃 → 𝐵2か らなり、次の条件を満足するものである。 任意の対象𝑌と任意の射𝑔1: 𝐵1 → 𝑌, 𝑔2: 𝐵2 → 𝑌が与えられ た時、以下の図式が可換となるような𝑢′: 𝑄 → 𝑌が唯一つ 存在する。 このとき、𝑄は 𝐵1 + 𝐵2と表す。 最小公倍数 和集合
7.
Haskell プログラミング言語で、カテゴリー(圏論)を ベースにしているのは、Haskell 関数型言語の歴史 素数 primes =
filterPrime [2..] where filterPrime (p:xs) = p : filterPrime [x | x <- xs, x `mod` p /= 0] クイックソート quicksort [] = [] quicksort (x:xs) = quicksort smaller ++ [x] ++ quicksort larger where smaller = [a | a <- xs, a < x] larger = [a | a <- xs, a >= x] 関数とは 𝑣 = 𝑣0 − 𝑔𝑑𝑡(速度) 𝑦 = 𝑦0 + 𝑣𝑑𝑡(位置) 言語 年 発明者 ラムダ計算 1930 チャーチ 圏論 1945 マックレーン LISP 1958 マッカーシー Scheme 1975 サスマン Smalltalk-80 1980 ゼロックス社 Haskell 1.0 1990 ハスケル・カリーに因 んで Haskell 2010 2010
8.
Haskellと圏論 圏 1.対象 2.射 3.ソース、ターゲット 4.恒等射 5.合成(結合律) Haskell 1.データ型(集合:要素の集まり) 2.関数(クラス・インスタンス) 3.シグニチャ データ型𝐶 𝑓 𝑔 𝑔°𝑓 データ型𝐷 𝑓′ = 𝑓𝑚𝑎𝑝 𝑓 𝑔′ =
𝑓𝑚𝑎𝑝 𝑔 𝑔′ °𝑓′ = 𝑓 𝑚𝑎𝑝 𝑔°𝑓 = 𝑓𝑚𝑎𝑝 𝑔 °(𝑓𝑚𝑎𝑝 𝑓) Haskellでの関手 随伴関手 モナド 𝑅°𝐿 モナドの例 入出力 ファイル Maybe (例外事象) モナドの利点 ドメイン固有言語 →簡単に作成 圏𝐵 圏𝐴 𝐿 𝑅 忘却関手 赤ん坊 の世界 雑音 中学生 の世界 会話 実世界 純粋な 世界
9.
関数型リアクティブ プログラミング 関数型言語を実世界へ ・ロボット ・ゲーム ・シミュレーション 動画 ビリヤード台で衝突 しあう二つのボール ビリヤード座標系 重心座標系 simulation ::
HasTime t s => Wire s () IO a (Ball, Ball) simulation = proc _ -> do rec b1 <- ball "ball1" mass1 radius1 vInit1 pInit1 -< ("ball1", c) b2 <- ball "ball2" mass2 radius2 vInit2 pInit2 -< ("ball2", c) c <- collision -< (b1, b2) returnA -< (b1, b2) 振舞い:時間を変数とする関数 イベント:ある時間での事象 例 :音楽 振舞い :曲 イベント:打鍵 デモ Time Int x Time Int 2 stepper 2 x 詳細は http://bitterharvest.hatenablog.com/entry /2015/09/24/164937
10.
さらに勉強する人のために
11.
ご清聴ありがとうございました。 http://bitterharvest.hatenablog.com でお会いしましょう。
Télécharger maintenant