2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Qiita内で圏論に言及するエントリのまとめ (4)

Posted at

前回に続き、qiita内の圏論に関するエントリの真偽を検証します。

モナドを使って副作用のある関数を純粋な関数にする

正しいことも書いてありますが、話の核の部分は完全に誤っているエントリです。

ある圏の中の関数を合成した関数は、同じ圏の中にないといけないのです。

正しい主張です。

圏論で言うところの直和です。
でも例外には直和を使えと書いてあります。

文章中の定義を直和と言っていいかは微妙ですが、通常、例外を数式で扱うには直和を用います。

でも大丈夫、この大変な変換をしてくれるのがモナドなのです!

クライスリ圏における射の合成のことを言っているのであれば、正しい主張です。

自己関手Tと2つの自然変換η、μの組です。

正しい主張です。

関手というのは圏を別の圏に変換する変換で

正しい主張です。

自然変換は関手を別の関手に変換する変換です。
自己関手TはCをCへ変換するものです。
ηは1CをTに変換する自然変換です。
μはT2をTに変換する自然変換です。

「変換」を使うべきかは議論がありますが、正しいと言っても差し支えはないと考えます。

2つの自然変換はただの自然変換ではなく、以下の可換図式を満たさないといけません。

wikipediaの引用ですが、正しい記述です。

T(i)=Right(i)
T(s)=Left(s)

誤っています。自己関手Tの対象関数を定義している式と予想されますが、Right i、Left sはいずれも対象ではありません。Either、もしくはeが対象と考えられます。

T(fis)(x)= ...
T(fsi)(x)= ...

誤っています。自己関手Tの射関数を定義している式と予想されますが、この定義では関手になりません。$T(\rm{length} \circ \rm{em})(\rm{"XYZ"}) \ne (T(\rm{length}) \circ T(\rm{em}))(\rm{"XYZ"})$となり、結合則が満たされません。

ηは1CをTに変換する自然変換で、μはT2をTに変換する自然変換です。
1Cというのは、自分を自分にそのまま対応させる関手で、int型をint型に、fiiをfiiに、というように、何もしない変換です。

正しい主張です。

これが可換図式を満たすことを確認します。
...
というわけで、このTとμとηの組は本当にモナドです。
...
なんにせよ、モナドのおかげで不純な関数を消して、純粋な関数だけからなる世界を作ることができました。

誤っています。Tが関手ではないため、この議論は成立しません。

今回の訳注

例外をつけくわえるモナドは、 $T X = E + X$として知られています。 $+$ がいわゆるEither型構築子です。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?