ともちんの Tech ブログ

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

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

Scala プロジェクトのドキュメントを mdoc で書き、Honkit と GitHub Actions を使ってGitHub Pages に自動デプロイする

Scala のプロジェクトのドキュメントを mdoc で書いて、Honkit と GitHub Pages でドキュメントを公開するまでをやってみました。

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 をやっていて、圏論…

Scala で半加算器と全加算器を実装する

Scala で半加算器、全加算器、nビット加算器を実装してみました。

Akka HTTP Cilent API を使って JSON データを送信する

Akka HTTP Client API を使って HTTP リクエストを送信してみました。

暗号化ツールキット Keyczar についてのまとめ

暗号化ツールキット Keyczar についての概要です。現在開発は終了していますが、Keyczar を廃止して新しいツールキットを導入するために勉強しました。

HHKB Professional hybrid Type-S を購入した

HHKB Professional hybrid Type-S を購入して、幸せになります。

Angular チュートリアル "Tour of Heroes" をやった

Angular のチュートリアル "Tour of Heroes" をやりました。

Seq[Option[A]].flatten はできるが Seq[Either[A, B]].flatten はできない

概要 理由 Seq.flatten の定義 Seq[Option[T]].flatten について まとめ 概要 Seq[Option[T]].flatten はできるが、Seq[Either[A, B]].flatten とすることはできない。 flatten メソッドは、以下のように入れ子になったコレクションや Option、Try などを平…

Scala コレクション - Seq の定義を見よう

はじめに コレクションは、様々なデータを格納するための Scala において重要な概念です。 コレクションには主に、リストや配列などを含む Seq、ハッシュマップやツリーマップを含む Map、そして Set の3つのコレクションがあります。 本エントリでは、不変 …

技術ブログをはじめます。

はじめまして、ともちんと申します。 今年2020年4月に新社会人となりまして、自身の活動記録を残そうと思い立ち この度、技術ブログを始めることにしました。 本記事では、自己紹介と今後の予定について書きたいと思います。 自己紹介 以下、私の自己紹介で…