なぜ言語タイプのカテゴリには、Functorsではなく形態がありますか?
-
28-09-2020 - |
質問
私はおそらくこの質問をよく句づけないので、私が何を意味するのか説明しようとしているように私と一緒に思います。
プログラミングに適用されるように、私は学習カテゴリ理論に取り組んでいます。これまでのところ、私はそれを理解しています:
- カテゴリ内のオブジェクトは「違反していません」です。あなたはそれらの内部構造を見るためにそれらの中にピアを描くことになっていません。
- 任意のセットはカテゴリ です
- プログラミング言語タイプはセットとして考えることができます。 (boolはset true、falseです。intはすべての整数のセットです。)
- したがって、言語のすべての種類はセットのカテゴリを形成します。
- 形態はオブジェクト間の矢印です。
- それらのオブジェクトが自分自身のカテゴリであるならば、形態はFunctorsと呼ばれる。
一緒になった、それはセットカテゴリintから設定されたカテゴリのブールへの地図であるため、intからboolの関数がファンクタであることを意味します。
しかし、私は他の場所(特に> https://www.johndcook.com/haukell-category-theory/ )、そのようなことが間違っていて、私たちは本当に言語タイプについて話すべきではありません。 「ただの」形態学を持つ基本カテゴリ。しかし、私はそれが私の以前の論理とどのように適合するかはわかりません。
私は私の以前の論理が故障していると結論づけなければなりませんが、私はどうやってまたはその理由は不明です。これを概念化する正しい方法は何ですか?追加の特別な例外を設定しますか?それとも、問題のあるスペースを表示する方法の任意の恣意的なものですか?それとも、どこかに間違った間違っていたのですか?
解決
ここに浮かぶいくつかのアイデアがあります。あなたはカテゴリレンズを通してプログラミング言語を見ることができ、そしてタイプはオブジェクトであり、それらは確かに不透明です。そのため、この写真ではBOOLはTRUEとFALSEのセットではありません。それは2つの形態(注入)がそれに入って、それに対応するもの、そして1つが偽のものであるオブジェクトです。 Haskellでは、これらはブールの2つのコンストラクタです。それらは引数を取らず、それは端末オブジェクトからの形態ズムと解釈されます(単体型)。それはすべてうまく機能しています。
その後、タイプが単なる種類の値のセットであり、モーフォミがセット間の関数です。セットと機能はカテゴリセットを形成します。部分関数(永遠にループするもの)について話していない限り、その絵はうまく機能します。
それからすべての個々のセットがそれ自体のカテゴリであるという3番目の考えがあります。それは個別のカテゴリーです、要素の間の形態(アイデンティティ以外)がありません。その場合、セット間の関数は確かに離散カテゴリ間の充電器に対応します。しかし、ディスクリートカテゴリ間のファンチクターは、形態の上に些細なオブジェクト(要素)上の関数に他なりませんので、非常に面白い視点ではありません。