32

私は少し混乱しており、誰かが私を正す必要があります. 私の現在の理解を概説しましょう:

Eエンドファンクタはどこにあり、Aいくつかのカテゴリは次のとおりです。

E : A -> A.

Haskell のすべてのタイプとモーフィズムがHaskカテゴリに含まれているため、Haskell のファンクタはエンドファンクタでもありませんか? .F : Hask -> Hask

私は自分が間違っていると感じていて、これをどうにかして単純化しすぎているので、誰かに私がなんてバカなのか教えてもらいたいのです。ありがとう。

4

3 に答える 3

37

「Haskellのファンクター」について質問しているのか、それともFunctorsについて質問しているのかを明確にしたいと思うかもしれません。Haskellで圏論の用語が使用されている場合、どのカテゴリーが想定されているかは必ずしも明確ではありません。

しかし、はい、デフォルトの仮定はHaskです。これは、射として機能するHaskellタイプのカテゴリーと見なされます。その場合、HaskのエンドファンクターFは、任意のタイプAをタイプF(A)にマップし、2つのタイプAとBの間の任意の関数fをいくつかのタイプF(A)とF(B)の間の関数F( f )にマップします。 。

a次に、任意の型を型(f a)にマップするエンドファンクターのみに制限するf* -> *、関数に関連付けられたマップを、型を持つ高階関数として記述できます(a -> b) -> (f a -> f b)。これは、もちろん、と呼ばれる型クラスです。Functor

ただし、タイプをにマッピングするファンクターなど、のインスタンスとして(直接)書き込むことができない、Hask上の正常に動作するエンドファンクターを簡単に想像できますそして、 Haskから他のカテゴリへのファンクターには明らかにあまり意味がありませんが、HaskからHask opへの(反変の)ファンクターを検討することは合理的です。FunctoraEither a t

それを超えて、インスタンスはFunctor必然的にカテゴリHask全体からそのサブセットにマップされ、したがって、カテゴリも形成します。しかし、 Haskのサブセットのファンクターについて話すことも合理的です。たとえば、タイプをに送信するファンクターについて考えてみます。Maybe a[a]

パッケージ全体を想定するのではなく、Hask内に埋め込まれたいくつかの圏論に着想を得た構造を提供するcategory-extrasパッケージを熟読することをお勧めします。

于 2010-07-17T22:13:25.843 に答える
16

最終的に を操作Haskしたとしても、 に基づいて構築できる他の多くのカテゴリがあり、Hask目前の問題にとって意味のあるものになる可能性があります。

  • Hask^op、Haskすべての矢印が逆になっています
  • Hask * Hask、そのファンクターはバイファンクターです
  • カンマ カテゴリ。オブジェクトは固定オブジェクトへのa射であり、射は可換三角形です
  • 関手圏、射は自然変換
  • 代数カテゴリ
  • 単項圏
  • クライスリ分類
  • ...

働く数学者が定義できるように、Mac Lane のカテゴリのコピーを入手して、彼らが Haskell で解決する問題を自分で見つけてみてください。特に、随伴関手 (右のカテゴリの初期/終端オブジェクト) とモナドとの関係をチョークします。

1 つの大きなカテゴリ ( Hask、またはおそらく「Hask右矢印/製品/... でオブジェクトを持ち上げた」、非厳密性や怠惰性などの Haskell の言語選択をカプセル化したもの) があったとしても、適切な派生カテゴリは表現力豊かです。

于 2010-07-19T09:07:42.877 に答える
7

特にモナドに関するおそらく関連する(または少なくとも興味深い)議論は、「モナドはエンドファンクターである必要はない」という論文にあります。

http://www.cs.nott.ac.uk/~txa/publ/Relative_Monads.pdf

于 2010-07-17T22:30:33.843 に答える