プログラマのための圏論

# YouTube

都度都度でプログラミングとからめて講義を進めてくれるので、はたと膝を打ちながら理解できる

## プログラマのための圏論 1

### 動機と哲学

https://youtu.be/I8LbkfSSR58

### 圏とは？

https://youtu.be/p54Hd7AmVFU

### 関数、全射

https://youtu.be/O2lZkr-aAqk

### 単射、単純な型

https://youtu.be/NcT7CGPICzo

### 圏、順序、モノイドの例

https://youtu.be/aZjhqkD6k6w

### クライスリ圏

https://youtu.be/i9CU4CuHADQ

### 終対象と始対象

https://youtu.be/zer1aFgj4aU

### 積

https://youtu.be/Bsdl_NKbNnU

### 余積、和の型

https://youtu.be/LkIRsNj9T-8

## プログラマのための圏論 2

https://www.youtube.com/watch?v=3XTQSx1A3x8&list=PLbgaMIhjbmElia1eCEZNvsVscFef9m0dm

## プログラマのための圏論 3

### 概要 Part 1

https://youtu.be/F5uEpKwHqdk

### 概要 Part 2

https://youtu.be/CfoaY2Ybf8M

### String Diagram Part 1

https://youtu.be/eOdBTqY3-Og

### String Diagram Part 2

https://youtu.be/lqq9IFSPp7Q

### 随伴とモナド

https://youtu.be/9p6_U5yV0ro

### モナド代数 Part 1

https://youtu.be/uXfBmsQJsN4

### モナド代数 Part 2

https://youtu.be/-wlT81LQ4Oc

### モナド代数 Part 3

https://youtu.be/9f8PumwS2gU

### Eilenberg Moore と Lawvere

[Eilenberg-Moore Category](http://nlab-pages.s3.us-east-2.amazonaws.com/nlab/show/Eilenberg-Moore+category)
[Lawvere Theory](https://en.wikipedia.org/wiki/Lawvere_theory)

https://youtu.be/5PaxKu2TXno

### Lawvere 定理

https://youtu.be/zCTAn_nIrS0

### 対角関手

https://youtu.be/XJgfrF3O6iE

### エンド

https://youtu.be/TAPxt26YyEI

### エンドとしての自然変換

https://youtu.be/DseY4qIGZV4

### コエンド

https://youtu.be/jQUebw8uac0

# 教科書

上記YouTube動画を基にした教材

- [オンライン](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/)
- [ハードカバー](https://www.blurb.com/b/9621951-category-theory-for-programmers-new-edition-hardco)
- [ソフトカバー](https://www.blurb.com/b/9603882-category-theory-for-programmers-scala-edition-pape) コード例にscalaも記載されている

## 基本用語

上記YouTube動画を見る時に知っておきたい英語

| 英語                     | 説明、日本語                                                   |
|--------------------------|----------------------------------------------------------------|
| after                    | f・g は "f after g" と読む                                     |
| bifunctor                | -                                                              |
| cross                    | C x D は "C cross D" と読む                                    |
| commute                  | 可換図式で「可換にする」という動詞として使われる               |
| component                | 自然変換の対象における「成分」のこと、コンポーネント           |
| diagonal functor         | 対角関手                                                       |
| dinatural transformation | 対角自然変換                                                   |
| endofunctor              | 自己関手 (end of functor と聞こえるので注意)                   |
| epimorphism              | 全射、エピ射                                                   |
| homomorphism             | 準同型                                                         |
| isomorphic               | 同型                                                           |
| lemma                    | 補題                                                           |
| monomorphism             | 単射、モノ射                                                   |
| morphism                 | 射                                                             |
| profunctor               | -                                                              |
| semigroup                | 半群                                                           |

# 日本語書籍

日本語で知識を貯めておく。

- [圏論の道案内](https://gihyo.jp/book/2019/978-4-297-10723-9)
  - 多分プログラマーを意識した構成。最終章ではHaskellを紹介している。
  - 対話形式で書かれてはいるけど、ノートに可換図式を手書きしないと理解できなかった
  - 初版は誤記（正誤表あり）が多すぎるので、書店で紙の本を買うときは注意

- [ベーシック圏論](https://www.maruzen-publishing.co.jp/smp/item/b295027.html)
  - 多分腰を据えて数学を勉強する人向け
  - 今のところ用語の定義等を確認するのに使用するぐらい...

# その他

- [ギリシャ文字に慣れる](https://qiita.com/ryokat3/items/8fe145567d1951284c57)