2012-04-26 10 views

答えて

50

ファンクタはあるカテゴリから別のカテゴリに進むことができます。エンドファンクタは、開始カテゴリとターゲットカテゴリが同じであるファンクタです。

内部形態対モーフィズムと同じです。

なぜ、モナドは内視鏡医でなければならないのですか?

「モナドは、エンドフュンターのカテゴリーで単なるモナドです」という有名な引用があります。幸いにも、他の誰かがすでにそれをかなりよく説明していますin this answer

なぜ、モナドが内語辞典でなければならないかという重要なポイントは、ホースケルで呼ばれるようにjoin、またはµです。通常、カテゴリ理論で呼ばれているように、モナドの定義¹の一部です。今

Prelude Control.Monad> :t join 
join :: Monad m => m (m a) -> m a 

ようにオブジェクトにファンクタmを適用した結果は、(Haskに、射などのオブジェクトや関数としてHaskellの種類のカテゴリ、タイプ)mが再び適用できることオブジェクトでなければなりません。つまり、ファンクタmのドメインであるカテゴリに属している必要があります。

functorは、そのドメインとcodomainが同じであれば(厳密には、そのcodomainがそのドメインのサブカテゴリである場合)、つまりエンドofunctorである場合にのみ作成できます。モナドとのコンポジタビリティはモナドの定義の一部であるため、モナドはフォルディオリファイヤーです。

1一方の定義では、(>>=)またはbindを使用してモナドを定義し、派生プロパティとしてjoinを指定することもできます。

+4

エンドヒューマンではない、ハスケルのファンクタはありますか? (彼らはすべてHaskをHaskにマップしないのですか?) – huon

+4

Haskellのすべてのファンは、endoです。 –

+3

非内科医は、http://hackage.haskell.org/packages/archive/categories/1.0/doc/html/Control-Categorical-Functor.html – sdcvvc

関連する問題