ともちんの Tech ブログ

圏論

Scala プログラマのための圏論入門 (7) 関手性

はじめに 前回、圏と圏との間の対応である関手について定義し、いくつかのインスタンスを見ていきました。 taretmch.hatenablog.com 本記事では関手についてさらに深掘り、今後の議論の際に必要となるいくつかの関手について説明します。 まず、型構築子に2…

Scala プログラマのための圏論入門 (6) 関手

はじめに これまで、圏は対象の集まりと射の集まりからなり、その例として Scala 圏 (対象は型 A、射は関数 A => B)、集合圏 (対象は集合 $A$、射は関数 $f: A \to B$)、Writer 圏 (対象は型 A、A から B への射は関数 A => Writer[L, B]) などがあると説明…

Scala プログラマのための圏論入門 (5) 積と余積

はじめに 本記事では、圏に関するいくつかの普遍的な構造について学んでいきます。 普遍的な構造として、順序集合における最小値に対応する始対象、最大値に対応する終対象、始対象と終対象との関連性である双対性、直積集合に対応する積、そして積と対をな…

Writer 圏における射の合成と、恒等射と、関手について[Scala]

Writer 圏、Writer 関手についての補足事項

Scala プログラマのための圏論入門 (4) Kleisli 圏の例

はじめに ここまでで、型と純粋関数を圏としてモデル化する方法をみてきました。その際に計算効果を持つ非純粋な関数をモデル化するための概念として、モナドが出てきましたね。 ここでは、計算効果についてイメージを深めるため、計算効果の例をモナドの概…

Scala プログラマのための圏論入門 (3) いろいろな圏

はじめに 空圏 単純なグラフ 順序集合 集合としてのモノイド 圏としてのモノイド まとめ 参考文献 はじめに ここまで、圏とは何かについて述べ、Scala の型と関数を圏として捉えることができることを述べました。 taretmch.hatenablog.com taretmch.hatenabl…

Scala プログラマのための圏論入門 (2) 型と関数の圏

はじめに 本記事では、Scala を構成する型と関数の圏である Scala 圏 (Hask 圏とも呼ばれます) について紹介します。まず、なぜ型が必要なのかについて述べ、型と関数を圏として考えていきます。 型と関数の圏 Hask 前回の記事 taretmch.hatenablog.com はじ…

Scala プログラマのための圏論入門 (1) 圏とは

はじめに 本記事は、圏論初心者が圏論について学びながら作成した、Scala プログラマのための入門書です。教科書は Bartosz Milewski 氏著の Category Theory for Programmers - Scala Edition で、構成も原則これに沿っています。 Scala をやっていて、圏論…