Une monade est juste un monoïde dans la catégorie des endofunctors, ce qui est le siècle des lumières?

cs.stackexchange https://cs.stackexchange.com/questions/128627

Question

Pardonnez le jeu de mot.Je suis un peu confus au sujet de l' implication de la demande et donc la question.

Arrière-plan: Je me suis aventuré dans la Catégorie de la Théorie pour comprendre les fondements théoriques de divers catégorique constructions et leur pertinence par rapport à la programmation fonctionnelle (FP).Il me semble (à moi) que l'un des "couronnement de pierres précieuses" à l'intersection du Chat et de la FP est cette déclaration:

A monad is just a monoid in the category of endofunctors

Qu'est-ce que l' big deal à propos de cette observation, et quels sont ses programmatique/les conséquences de conception?Des Sources comme sigfpe et de nombreux textes sur la PF semblent impliquer la mindblowingness de ce concept, mais peut-être que je suis incapable de voir la subtilité c'est d'être fait allusion.

Voici comment je comprends bien:

Sachant que quelque chose est une monoïde permet d'extrapoler le fait que l'on peut travailler au sein d'une réduire la carte où l'associativité des opérations nous permet de split/combiner le calcul dans un ordre arbitraire c'est à dire, (a1+a2)+a3 == a1+(a2+a3).Il peut également permettre de distribuer ce à travers les machines et atteindre la haute parallélisation.(Ainsi, j'ai pu mentalement aller à partir d'un theoretical construct -> computer science understanding -> practical problem solving.)

Pour moi, c'était évident (suite de l'étude de Chat) pour voir que les monades ont un monoidal la structure de la catégorie de endofunctors.Cependant, quelle est l'implication qu'on peut tirer de cela et quel est son programmatique/conception/ingénierie impact lorsque nous sommes codage avec un tel modèle mental?

Voici mon interprétation:

  • Théorique Incidence: Tous les calculable problèmes au cœur de leur activité sont monoidal dans un certain sens.
    • Est-ce correct?Si oui, je peux comprendre l' l'illumination.C'est un point de vue différent sur la compréhension de la notion ou de la structure de formalisation des problèmes qui ne serait pas évident, si vous venez de Turing/Lambda modèle de calcul et je peux être en paix.
    • Est-il de plus?
  • Conséquence Pratique: Est-il tout simplement de fournir un cas pour le do-la notation de style de programmation?C'est, si les choses sont monoidal, nous pouvons mieux apprécier l'existence de la do/for construit en Haskell/Scala.Est ce que c'est?Même si nous ne savons pas à propos de la monoidal fondements, nous n'avons pas besoin invoquer l' monoidalness pour faire cette demande puisqu'lier >>= et flatMap des constructions sont définies pour être associative.Donc, ce qui donne?Ou est-il plus à voir avec la matériau compressible de monadique constructions et que est indirecte, l'illumination qui est en train d'être fait allusion?

Question(s): Ce qui me manque ici?Est-ce simplement le la reconnaissance le fait que les monades sont généralisées monoids et qu'ils peuvent être combiné dans n'importe quel ordre similaire à la carte-réduire les opérations comme monoids?Comment le fait de connaître à propos de la monoidal bien aider améliorer le code/la conception de toute façon?Ce qui est un bon exemple avant/après pour montrer cette différence (avant de connaître les monades/monoidality et après)?

Était-ce utile?

La solution

Cette réponse peut ne pas être exactement ce que vous cherchez.Je crois que c'est peut-être l'importance de cette caractérisation est particulièrement à mettre en évidence ici.La citation

une monade dans X est juste un monoïde dans la catégorie des endofunctors de X

est à l'origine de Mac Lane Catégories pour le Travail de Mathématicien, où il apparaît comme un utile intuition pour la définition de la monade, qui, seul, peut sembler tout à fait inconnu au premier abord.En caractérisant comme un monoïde dans un monoidal catégorie, le lecteur est donné un point de vue alternatif.Notez que le chapitre sur les monades vient avant le chapitre sur monoidal catégories:la remarque est destinée à être utile, plutôt que de précis (il est précisé que plus tard).

La citation a été ensuite reformulé en James Iri infâme de l'article Brève, Incomplète, et Surtout Mauvais Histoire de Langages de Programmation.

Une monade est juste un monoïde dans la catégorie des endofunctors, quel est le problème?

Présenté hors contexte, comme c'est dans l'article, il est destiné à amuser.La citation est depuis devenu un mème dans la programmation fonctionnelle de la communauté, principalement parce qu'il est amusant, plutôt que d'un aperçu de la programmation fonctionnelle (bien qu'il ne se servent aussi de piquer la curiosité de la fonctionnelle de programmeurs, de les dessiner dans le monde merveilleux de la catégorie de la théorie).Mon avis est que cette caractérisation, tout en étant utile et intéressant, n'est pas aussi important qu'on pourrait l'imaginer à partir de sa popularité.

Cependant, ce n'est pas dire qu'il n'y est aucune idée pour être acquis à partir de cette caractérisation.Tout d'abord, permettez-moi de souligner que, alors que la présentation d'une monade avec une multiplication et l'unité est clairement évocateurs d'un monoïde, comme vous le soulignez, la Kleisli présentation, avec une liaison et de retour de l'opération, ne l'est pas.C'est le Kleisli présentation qui est commun dans la programmation fonctionnelle, donc certainement la qualification d'un monoïde est plus intéressant de ce point de vue.

À partir d'un point de vue théorique, l'une des idées est en effet que de nombreuses structures naturelles, en sciences de l'informatique (et mathématiques) monoidal.Du point de vue de monades (en particulier avec leur rapport à cartésien operads et Lawvere théories), monoidal structure correspond à la substitution de la structure (de manière équivalente, la composition de la structure).La Substitution est omniprésent en informatique (par exemple, la capture d'éviter la substitution dans un type de théorie, ou la greffe des arbres).Les monades sont juste un exemple de plus.

Tout en reconnaissant officiellement la déclaration en question ne peut être enrichissante, je suggère qu'il est instructif pour comprendre les différents points de vue sur les monades, car il vous permet de voir les différentes façons dont les monades peuvent être utilisés (par ex.en tant que conteneurs, décrivant la structure algébrique, décrivant multi-systèmes de composition, etc.).Il peut être difficile d'apprécier à quelle fréquence ils pop up sans avoir vu les différentes lumières dans lesquelles ils peuvent être vus.En ce sens, les monades comme monoids est juste un point de vue (et probablement pas la plus éclairante).

Enfin, alors que les monades elles-mêmes sont sans conteste très utile dans la pure programmation fonctionnelle en général, je ne suis pas sûr que le point de vue que les monades comme monoids est utile en soi.Je pense que le Kleisli point de vue, qui se trouve être l'équivalent, est la plus éclairante point de vue ici.

En résumé, cette réponse peut être un peu décevant:Je ne pense pas que la compréhension de cette relation est tout ce qui utile ou éclairant pratiquement (c'est à direpour la programmation).Cependant, il est un point de vue utile de garder à l'esprit, avec les autres, lorsque l'on considère les monades théoriquement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top