標準的な初心者の Haskell の質問の 1 つは、「モナドとは何ですか?!」と同形の発言です。この質問に対する正統な答えは、「モナドはエンドファンクターの範疇における単純なモノイドであり、何が問題なのか?」と悪名高く定義されています。
明らかに、モノイドは、セットの要素である連想二項演算子を持つ任意のセットです。しかし、「エンドファンクターのカテゴリー」とは何ですか? より一般的に言えば、カテゴリーとは何か、エンドファンクターとは何か、さらに言えば、ファンクターとは何か? (そして、ファンクターの CT 定義は、Haskell が a と呼ぶものにどの程度関連していFunctor
ますか?)