Si je découvre que quelque chose est un Monoid
ou Monad
, j'obtiens tout à utiliser toutes sortes de fonctions amusantes, comme foldMap
, sequence
ou même mapM
. Ils me rendent heureux.À quoi sert Control.Category?
Que puis-je obtenir si je découvre que quelque chose est un Category
? Est-ce que je reçois quelque chose d'amusant en plus de surcharger id
et (.)
?
Comme pour toutes les abstractions, il y a un compromis: soit vous pouvez faire beaucoup de choses avec eux, soit vous découvrez que beaucoup de choses en sont des exemples. Les catégories vont aussi loin qu'ils peuvent vers le côté «beaucoup de choses sont des exemples» du compromis: sacrément près de chaque idée mathématique a une catégorie sous-jacente. Le prix que vous payez pour la terminologie commune entre toutes ces idées est que simplement appeler quelque chose une catégorie ne vous donne pas beaucoup d'informations. Si vous voulez plus, vous devez balancer des adjectifs sur le mot: "catégorie fermé de cartesion", ou "catégorie monoidale tressée", etc. –